RMarkdown authors: Chad Masarweh and ChatGPT4o

Content authors: Chad Masarweh, ChatGPT4o, and Andrew Oliver


I calculated the RPKG of each gene in the butyrate synthesis pathways via

I summed the RPKG of the all the genes in each pathway, except



data_dir = "/Users/chad.masarweh/Documents/FL100_SCFA_andrew"

library(dplyr)
library(tidyr)
library(readr)
library(ggplot2)
library(gridExtra)
library(grid)
library(rlang)

Import pathway and gene RPKG files from the DIAMOND, DIAMOND->BWA, and HMMER->BWA workflows

Here, “but” refers to “butyrate”, and “DIA” refers to “DIAMOND”, and “merged” refers to “from merged reads”, and “unmerged” refers to “from unmerged reads”, and “HMMERBWA” means the workflow was “mapped reads via BWA to HMMER-annotated genes”, and “DIABWA” means the workflow was “mapped reads via BWA to DIAMOND-annotated genes”

Because the pathways and genes files, respectively, are exactly the same format, they can be imported as elements of a list, over which commands can be iterated.

# Define a function to rename the first column to "subject_id", since it might be "subject"
rename_first_column <- function(df) { 
  colnames(df)[1] <- "subject_id"
  df$subject_id <- as.character(df$subject_id) 
  
  # Rename "4hbt" to "ghbt" to make R happy. "4" and "g" for "gamma" are equivalent
  if ("4hbt" %in% colnames(df)) {
    colnames(df)[colnames(df) == "4hbt"] <- "ghbt"
  }
  
  return(df) 
}

# Convert strings to NA and ensure numeric values
clean_numeric <- function(df) {
  df %>%
    mutate(across(-subject_id, ~ as.numeric(as.character(.))))
}

# Define the DIAMOND percent identity thresholds to name things and filter things
thresholds <- c(50, 60, 70, 80, 90, 95, 98, 99, 100)
thresholds2 <- c(40, 50, 60, 70, 80, 90)

# Create pathways_rpkg list with the first column renamed to "subject_id"
pathways_rpkg <- 
  c(
    setNames(
      lapply(
        sprintf(file.path(data_dir, "FL100_but_pathways_rpkg_DIA%d.tsv"), thresholds), 
        function(file) { 
          rename_first_column(read_tsv(file, show_col_types = FALSE)) 
          }
      ), 
      sprintf("d%d", thresholds)
    ),
    setNames(
      lapply(
        sprintf(file.path(data_dir, "FL100_but_pathways_unmerged_rpkg_DIA%dBWA.tsv"), thresholds2), 
        function(file) { 
          rename_first_column(read_tsv(file, show_col_types = FALSE)) 
          }
      ), 
      sprintf("d%d_b", thresholds2)
    ),
    list("hGA_b" = 
         rename_first_column(
           read_tsv(file.path(data_dir, "FL100_but_pathways_unmerged_rpkg_HMMERBWA.tsv"), 
                    show_col_types = FALSE
                    )
         )
    ),
    list("hGA_b_fs" = 
         rename_first_column(
           read_tsv(file.path(data_dir, "FL100_but_pathways_unmerged_rpkg_HMMERBWAFS.tsv"), 
                    show_col_types = FALSE
                    )
         )
    ),
    list("hGA_b_m" = 
         rename_first_column(
           read_tsv(file.path(data_dir, "FL100_but_pathways_merged_rpkg_HMMERBWA.tsv"), 
                    show_col_types = FALSE
                    )
         )
    ),
    list("d90_b_m" = 
         rename_first_column(
           read_tsv(file.path(data_dir, "FL100_but_pathways_merged_rpkg_DIA90BWA.tsv"), 
                    show_col_types = FALSE
                    )
         )
    )
  )

# Create genes_rpkg list with the first column renamed to "subject_id"
genes_rpkg <- 
  c(
    setNames(
      lapply(
        sprintf(file.path(data_dir, "FL100_but_genes_rpkg_DIA%d_collapsed.tsv"), thresholds), 
        function(file) { 
          rename_first_column(read_tsv(file, show_col_types = FALSE)) 
        }
      ), 
      sprintf("d%d", thresholds)
    ),
    setNames(
      lapply(
        sprintf(file.path(data_dir, "FL100_but_genes_unmerged_rpkg_DIA%dBWA_collapsed.tsv"), thresholds2), 
        function(file) { 
          rename_first_column(read_tsv(file, show_col_types = FALSE)) 
        }
      ), 
      sprintf("d%d_b", thresholds2)
    ),
    list("hGA_b" = 
         rename_first_column(
           read_tsv(file.path(data_dir, "FL100_but_genes_unmerged_rpkg_HMMERBWA_collapsed.tsv"), 
                    show_col_types = FALSE
                    )
         )
    ),
    list("hGA_b_fs" = 
         rename_first_column(
           read_tsv(file.path(data_dir, "FL100_but_genes_unmerged_rpkg_HMMERBWAFS_collapsed.tsv"), 
                    show_col_types = FALSE
                    )
         )
    ),
    list("hGA_b_m" = 
         rename_first_column(
           read_tsv(file.path(data_dir, "FL100_but_genes_merged_rpkg_HMMERBWA_collapsed.tsv"), 
                    show_col_types = FALSE
                    )
         )
    ),
    list("d90_b_m" = 
         rename_first_column(
           read_tsv(file.path(data_dir, "FL100_but_genes_merged_rpkg_DIA90BWA_collapsed.tsv"), 
                    show_col_types = FALSE
                    )
         )
    )
  )

# Check out the result
head(pathways_rpkg[[1]])
## # A tibble: 6 × 7
##   subject_id Acetyl  Glut   Lys  GABA sumPaths1 sumPaths2
##   <chr>       <dbl> <dbl> <dbl> <dbl>     <dbl>     <dbl>
## 1 5001         5.34 0.653 0.887 0.298      12.7      9.36
## 2 5002         6.42 0.567 0.967 0.666      14.6     10.7 
## 3 5004         5.82 0.606 1.95  0.368      14.4     10.7 
## 4 5005         6.17 0.711 1.34  0.687      15.1     11.2 
## 5 5006         5.48 0.687 0.746 0.317      12.6      9.09
## 6 5007         4.73 0.588 0.399 0.279      10.5      7.50
head(genes_rpkg[[1]])
## # A tibble: 6 × 28
##   subject_id  ghbt   abfD   abfH   atoA   atoD   bcd  bhbd   buk   but   cro
##   <chr>      <dbl>  <dbl>  <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 5001       0.113 0.0861 0.0986 0.115  0.104   2.18  1.19 0.348  1.29  1.15
## 2 5002       0.284 0.161  0.221  0.106  0.0880  2.07  1.38 0.554  1.23  1.40
## 3 5004       0.135 0.0763 0.157  0.233  0.170   1.99  1.20 0.576  1.29  1.22
## 4 5005       0.291 0.141  0.255  0.202  0.185   2.27  1.32 0.471  1.38  1.40
## 5 5006       0.153 0.0862 0.0786 0.141  0.107   1.87  1.29 0.279  1.08  1.21
## 6 5007       0.105 0.0498 0.124  0.0652 0.0487  1.51  1.02 0.321  1.02  1.07
## # ℹ 17 more variables: etfA <dbl>, etfB <dbl>, gcdA <dbl>, gcdB <dbl>,
## #   gctA <dbl>, gctB <dbl>, hgCoAdA <dbl>, hgCoAdB <dbl>, hgCoAdC <dbl>,
## #   kal <dbl>, kamA <dbl>, kamD <dbl>, kamE <dbl>, kce <dbl>, kdd <dbl>,
## #   ptb <dbl>, thl <dbl>

Question: do different RPKG calculation workflows produce different RPKG distributions? (very yes)

group1 <- c("abfH", "ghbt", "abfD")
group2 <- c("kamA", "kamD", "kamE", "kdd", "kce", "kal", "atoA", "atoD")
group3 <- c("gctA", "gctB", "hgCoAdA", "hgCoAdB", "hgCoAdC", "gcdA", "gcdB")
group4 <- c("but", "buk", "ptb", "thl", "bhbd", "cro")
group5 <- c("bcd", "etfA", "etfB")

combined_df <- do.call(rbind, 
                       lapply(names(genes_rpkg), function(name) {
                         df <- genes_rpkg[[name]]
                         df$element <- name  # Add a new column to identify the pathway set
                         df
                       }
                       )
)

# Gather all variables except "subject_id" and "element" for plotting
combined_long <- combined_df %>%
  select(-subject_id) %>%  # Remove the "subject_id" column
  pivot_longer(-element, names_to = "variable", values_to = "value")  # Convert to long format

combined_long$element <- 
  factor(combined_long$element, 
         levels = c(
           "d50",
           "d60",
           "d70",
           "d80",
           "d90",
           "d95", 
           "d98", 
           "d99", 
           "d100", 
           "d40_b", 
           "d50_b", 
           "d60_b", 
           "d70_b", 
           "d80_b", 
           "d90_b", 
           "d90_b_m", 
           "hGA_b_m",
           "hGA_b",
           "hGA_b_fs"
         )
  )

combined_long$variable <- 
  factor(combined_long$variable, 
         levels = c(
           "abfH", # beginning of 4-aminobutyrate pathway
           "ghbt", 
           "abfD", 
           "kamA", # beginning of lysine pathway
           "kamD", 
           "kamE", 
           "kdd", 
           "kce", 
           "kal", 
           "atoA", 
           "atoD", 
           "gctA", # beginning of Glutarate pathway
           "gctB", 
           "hgCoAdA", 
           "hgCoAdB", 
           "hgCoAdC", 
           "gcdA", 
           "gcdB", ## note that this gene is not included in the pathway calculations
           "but", # beginning of acetyl-CoA pathway
           "buk", 
           "ptb", 
           "thl", 
           "bhbd", 
           "cro",
           "bcd", # shared genes
           "etfA", 
           "etfB"
         )
  )

separator_df <- data.frame(xintercept = which(levels(combined_long$element) == "d100") + 0.5)

# Function to generate a plot for a given group with median lines
plot_group <- function(data, group, group_title) {
  group_data <- data %>% filter(variable %in% group)
  
  # Compute the median value of "hGA_b" for each gene in the group
  median_values <- group_data %>%
    filter(element %in% c("hGA_b", "hGA_b_m")) %>%
    group_by(variable) %>%
    summarize(median_value = mean(median(value, na.rm = TRUE), na.rm = TRUE))
  
  
  ggplot(group_data, aes(x = element, y = value)) +
    geom_boxplot() +
    geom_hline(data = median_values, aes(yintercept = median_value), color = "blue", linetype = "dotted", linewidth = 1) +
    geom_vline(data = separator_df, aes(xintercept = xintercept), color = "red", linetype = "dashed", linewidth = 0.5) +
    facet_wrap(~ variable, ncol = 4, scales = "free") +
    theme_bw() +
    labs(title = group_title, x = "RPKG calculation workflow", y = "RPKG") +
    theme(
      axis.text.x = element_text(angle = 45, hjust = 1, color = "black"),
      plot.title = element_text(hjust = 0.5),
      axis.title.x = element_text(face = "bold"),
      axis.title.y = element_text(face = "bold")
    )
}

# Generate plots for each group with median lines
plot1 <- plot_group(combined_long, group1, "Box-and-whisker plots for 4-Aminobutyrate pathway genes")
plot2 <- plot_group(combined_long, group2, "Box-and-whisker plots for Lysine pathway genes")
plot3 <- plot_group(combined_long, group3, "Box-and-whisker plots for Glutarate pathway genes")
plot4 <- plot_group(combined_long, group4, "Box-and-whisker plots for Acetyl-CoA pathway genes")
plot5 <- plot_group(combined_long, group5, "Box-and-whisker plots for shared pathway genes")
# Arrange the plots in a grid layout
grid.arrange(plot1, plot2, plot3, plot4, plot5, ncol = 1, heights = c(2, 2, 2, 2, 1))

Question: do the same butyrate pathway RPKG measurements from different workflows correlate?

corr_list <- list()

# Make a vector of column names, except 'subject_id'
columns_to_corr <- setdiff(colnames(pathways_rpkg[[1]]), "subject_id")

# loop through each column name (i.e. pathway count)
for (col in columns_to_corr) {
  
  # Calculate the correlation matrix across all pathways_rpkg elements for the current column
  corr_element <- 
    cor(
      do.call(
        cbind, 
        lapply(
          names(pathways_rpkg), 
          function(element) pathways_rpkg[[element]][[col]]
        )
      ), 
      method = "spearman"
    )
  
  # The matrix has no names, only a position index. Assign row and column names based on the names of pathways_rpkg
  colnames(corr_element) <- rownames(corr_element) <- names(pathways_rpkg)
  
  # Extract the lower triangular part of the matrix (excluding the diagonal)
  corr_element[upper.tri(corr_element, diag = TRUE)] <- NA
  
  # Store the correlation matrix in the previously-defined list using the column name as element name
  corr_list[[col]] <- corr_element
}

Relevant lines of code from count_ButyratePathways.py

for (col in names(corr_list)) {
  # Round each correlation matrix in the list to 4 decimal places (10,000th)
  corr_matrix_rounded <- round(corr_list[[col]], 2)
  
  cat(paste("Correlation matrix for", col, ":\n"))
  print(corr_matrix_rounded, na.print = "")
  cat("\n")
}
## Correlation matrix for Acetyl :
##           d50  d60  d70  d80  d90  d95  d98  d99 d100 d40_b d50_b d60_b d70_b
## d50                                                                          
## d60      0.99                                                                
## d70      0.96 0.99                                                           
## d80      0.93 0.96 0.99                                                      
## d90      0.85 0.89 0.93 0.97                                                 
## d95      0.76 0.79 0.84 0.90 0.98                                            
## d98      0.68 0.72 0.76 0.83 0.93 0.98                                       
## d99      0.64 0.67 0.72 0.79 0.90 0.96 0.99                                  
## d100     0.64 0.67 0.72 0.79 0.90 0.96 0.99 1.00                             
## d40_b    0.80 0.79 0.74 0.68 0.59 0.51 0.44 0.40 0.40                        
## d50_b    0.87 0.87 0.84 0.80 0.73 0.65 0.58 0.54 0.54  0.96                  
## d60_b    0.89 0.91 0.90 0.87 0.78 0.69 0.61 0.56 0.56  0.90  0.96            
## d70_b    0.89 0.91 0.93 0.92 0.85 0.76 0.68 0.63 0.63  0.84  0.93  0.98      
## d80_b    0.88 0.91 0.94 0.95 0.91 0.84 0.77 0.72 0.72  0.79  0.90  0.95  0.98
## d90_b    0.86 0.90 0.93 0.95 0.94 0.89 0.83 0.79 0.78  0.74  0.86  0.91  0.95
## hGA_b    0.89 0.90 0.89 0.86 0.77 0.68 0.60 0.55 0.54  0.91  0.97  0.99  0.97
## hGA_b_fs 0.89 0.91 0.90 0.87 0.79 0.70 0.63 0.58 0.57  0.91  0.97  0.99  0.98
## hGA_b_m  0.96 0.97 0.96 0.92 0.84 0.74 0.65 0.60 0.60  0.83  0.90  0.95  0.94
## d90_b_m  0.89 0.92 0.96 0.98 0.97 0.92 0.86 0.82 0.82  0.67  0.79  0.86  0.91
##          d80_b d90_b hGA_b hGA_b_fs hGA_b_m d90_b_m
## d50                                                
## d60                                                
## d70                                                
## d80                                                
## d90                                                
## d95                                                
## d98                                                
## d99                                                
## d100                                               
## d40_b                                              
## d50_b                                              
## d60_b                                              
## d70_b                                              
## d80_b                                              
## d90_b     0.98                                     
## hGA_b     0.94  0.90                               
## hGA_b_fs  0.95  0.91  1.00                         
## hGA_b_m   0.92  0.90  0.95     0.95                
## d90_b_m   0.95  0.98  0.85     0.86    0.91        
## 
## Correlation matrix for Glut :
##           d50  d60  d70  d80  d90  d95  d98  d99 d100 d40_b d50_b d60_b d70_b
## d50                                                                          
## d60      0.86                                                                
## d70      0.73 0.95                                                           
## d80      0.73 0.95 1.00                                                      
## d90      0.72 0.93 0.98 0.99                                                 
## d95      0.68 0.88 0.93 0.93 0.97                                            
## d98      0.58 0.75 0.80 0.81 0.88 0.96                                       
## d99      0.53 0.69 0.74 0.75 0.82 0.92 0.99                                  
## d100     0.53 0.69 0.74 0.75 0.82 0.91 0.99 1.00                             
## d40_b    0.63 0.49 0.35 0.34 0.33 0.31 0.28 0.24 0.24                        
## d50_b    0.70 0.69 0.58 0.58 0.57 0.54 0.47 0.43 0.43  0.74                  
## d60_b    0.63 0.86 0.90 0.90 0.88 0.83 0.72 0.66 0.66  0.51  0.69            
## d70_b    0.63 0.86 0.90 0.90 0.89 0.83 0.73 0.67 0.67  0.50  0.69  1.00      
## d80_b    0.63 0.86 0.90 0.90 0.89 0.83 0.73 0.67 0.66  0.50  0.69  1.00  1.00
## d90_b    0.63 0.85 0.89 0.90 0.91 0.90 0.83 0.78 0.78  0.48  0.67  0.96  0.97
## hGA_b    0.63 0.87 0.91 0.90 0.89 0.83 0.73 0.67 0.67  0.51  0.69  1.00  1.00
## hGA_b_fs 0.63 0.87 0.91 0.90 0.89 0.84 0.73 0.67 0.67  0.51  0.69  1.00  1.00
## hGA_b_m  0.72 0.92 0.96 0.96 0.95 0.88 0.76 0.71 0.70  0.42  0.63  0.95  0.95
## d90_b_m  0.70 0.89 0.94 0.94 0.96 0.95 0.87 0.82 0.82  0.40  0.62  0.92  0.92
##          d80_b d90_b hGA_b hGA_b_fs hGA_b_m d90_b_m
## d50                                                
## d60                                                
## d70                                                
## d80                                                
## d90                                                
## d95                                                
## d98                                                
## d99                                                
## d100                                               
## d40_b                                              
## d50_b                                              
## d60_b                                              
## d70_b                                              
## d80_b                                              
## d90_b     0.97                                     
## hGA_b     1.00  0.96                               
## hGA_b_fs  1.00  0.97  1.00                         
## hGA_b_m   0.95  0.93  0.95     0.96                
## d90_b_m   0.92  0.97  0.92     0.92    0.95        
## 
## Correlation matrix for Lys :
##           d50  d60  d70  d80  d90  d95  d98  d99 d100 d40_b d50_b d60_b d70_b
## d50                                                                          
## d60      0.99                                                                
## d70      0.96 0.99                                                           
## d80      0.94 0.96 0.99                                                      
## d90      0.81 0.83 0.87 0.92                                                 
## d95      0.60 0.62 0.67 0.74 0.93                                            
## d98      0.52 0.54 0.59 0.67 0.89 0.99                                       
## d99      0.51 0.53 0.58 0.66 0.88 0.99 1.00                                  
## d100     0.51 0.53 0.58 0.66 0.88 0.99 1.00 1.00                             
## d40_b    0.60 0.56 0.53 0.53 0.51 0.40 0.35 0.34 0.34                        
## d50_b    0.91 0.93 0.91 0.88 0.73 0.52 0.44 0.43 0.43  0.61                  
## d60_b    0.92 0.95 0.96 0.94 0.80 0.58 0.51 0.49 0.49  0.58  0.95            
## d70_b    0.91 0.95 0.97 0.96 0.83 0.62 0.55 0.54 0.54  0.55  0.94  0.99      
## d80_b    0.89 0.93 0.96 0.97 0.90 0.72 0.65 0.64 0.64  0.57  0.91  0.97  0.98
## d90_b    0.63 0.66 0.71 0.78 0.94 0.95 0.93 0.92 0.92  0.50  0.61  0.67  0.71
## hGA_b    0.92 0.94 0.93 0.90 0.75 0.53 0.46 0.45 0.45  0.60  0.99  0.97  0.96
## hGA_b_fs 0.92 0.94 0.94 0.90 0.75 0.53 0.46 0.45 0.45  0.59  0.99  0.97  0.95
## hGA_b_m  0.96 0.97 0.96 0.92 0.77 0.55 0.47 0.46 0.46  0.55  0.96  0.95  0.94
## d90_b_m  0.65 0.67 0.72 0.79 0.95 0.97 0.95 0.94 0.94  0.46  0.59  0.65  0.69
##          d80_b d90_b hGA_b hGA_b_fs hGA_b_m d90_b_m
## d50                                                
## d60                                                
## d70                                                
## d80                                                
## d90                                                
## d95                                                
## d98                                                
## d99                                                
## d100                                               
## d40_b                                              
## d50_b                                              
## d60_b                                              
## d70_b                                              
## d80_b                                              
## d90_b     0.80                                     
## hGA_b     0.93  0.63                               
## hGA_b_fs  0.93  0.62  1.00                         
## hGA_b_m   0.91  0.61  0.98     0.98                
## d90_b_m   0.79  0.99  0.61     0.60    0.61        
## 
## Correlation matrix for GABA :
##           d50  d60  d70  d80  d90  d95  d98  d99 d100 d40_b d50_b d60_b d70_b
## d50                                                                          
## d60      0.98                                                                
## d70      0.92 0.96                                                           
## d80      0.84 0.90 0.97                                                      
## d90      0.67 0.72 0.80 0.90                                                 
## d95      0.48 0.53 0.61 0.73 0.90                                            
## d98      0.32 0.37 0.44 0.56 0.75 0.93                                       
## d99      0.23 0.26 0.33 0.44 0.62 0.84 0.97                                  
## d100     0.23 0.26 0.33 0.44 0.62 0.84 0.96 1.00                             
## d40_b    0.49 0.47 0.40 0.34 0.32 0.27 0.22 0.20 0.20                        
## d50_b    0.84 0.84 0.78 0.70 0.58 0.41 0.29 0.21 0.20  0.68                  
## d60_b    0.76 0.82 0.86 0.83 0.69 0.52 0.38 0.27 0.27  0.52  0.86            
## d70_b    0.76 0.82 0.89 0.88 0.74 0.56 0.40 0.30 0.29  0.46  0.80  0.93      
## d80_b    0.62 0.68 0.76 0.83 0.86 0.70 0.53 0.41 0.40  0.41  0.68  0.81  0.86
## d90_b    0.54 0.60 0.67 0.74 0.84 0.74 0.60 0.47 0.47  0.35  0.60  0.72  0.76
## hGA_b    0.81 0.85 0.83 0.75 0.61 0.43 0.30 0.20 0.20  0.60  0.94  0.88  0.85
## hGA_b_fs 0.83 0.86 0.82 0.74 0.59 0.40 0.25 0.15 0.14  0.60  0.93  0.87  0.84
## hGA_b_m  0.87 0.90 0.87 0.79 0.62 0.44 0.30 0.20 0.20  0.54  0.90  0.84  0.82
## d90_b_m  0.57 0.63 0.70 0.78 0.87 0.76 0.61 0.47 0.47  0.31  0.57  0.70  0.74
##          d80_b d90_b hGA_b hGA_b_fs hGA_b_m d90_b_m
## d50                                                
## d60                                                
## d70                                                
## d80                                                
## d90                                                
## d95                                                
## d98                                                
## d99                                                
## d100                                               
## d40_b                                              
## d50_b                                              
## d60_b                                              
## d70_b                                              
## d80_b                                              
## d90_b     0.90                                     
## hGA_b     0.72  0.63                               
## hGA_b_fs  0.70  0.60  0.98                         
## hGA_b_m   0.69  0.60  0.97     0.94                
## d90_b_m   0.89  0.98  0.61     0.59    0.61        
## 
## Correlation matrix for sumPaths1 :
##           d50  d60  d70  d80  d90  d95  d98  d99 d100 d40_b d50_b d60_b d70_b
## d50                                                                          
## d60      0.98                                                                
## d70      0.92 0.97                                                           
## d80      0.86 0.92 0.98                                                      
## d90      0.74 0.80 0.88 0.95                                                 
## d95      0.62 0.67 0.75 0.84 0.96                                            
## d98      0.54 0.59 0.66 0.75 0.90 0.98                                       
## d99      0.51 0.55 0.61 0.70 0.86 0.96 0.99                                  
## d100     0.50 0.55 0.61 0.70 0.86 0.96 0.99 1.00                             
## d40_b    0.66 0.63 0.54 0.47 0.38 0.32 0.28 0.25 0.25                        
## d50_b    0.81 0.82 0.79 0.72 0.60 0.50 0.43 0.39 0.39  0.88                  
## d60_b    0.82 0.86 0.88 0.83 0.70 0.58 0.49 0.44 0.44  0.73  0.95            
## d70_b    0.80 0.86 0.90 0.88 0.78 0.66 0.57 0.52 0.51  0.66  0.90  0.98      
## d80_b    0.77 0.84 0.91 0.92 0.85 0.74 0.65 0.60 0.60  0.60  0.85  0.94  0.98
## d90_b    0.73 0.79 0.88 0.92 0.92 0.85 0.78 0.73 0.73  0.52  0.76  0.85  0.91
## hGA_b    0.80 0.81 0.77 0.70 0.59 0.49 0.43 0.39 0.38  0.90  0.97  0.92  0.88
## hGA_b_fs 0.80 0.81 0.78 0.71 0.60 0.50 0.43 0.39 0.38  0.89  0.98  0.93  0.89
## hGA_b_m  0.92 0.91 0.85 0.78 0.67 0.57 0.51 0.47 0.47  0.80  0.88  0.84  0.81
## d90_b_m  0.77 0.83 0.91 0.96 0.97 0.89 0.81 0.77 0.77  0.43  0.67  0.78  0.86
##          d80_b d90_b hGA_b hGA_b_fs hGA_b_m d90_b_m
## d50                                                
## d60                                                
## d70                                                
## d80                                                
## d90                                                
## d95                                                
## d98                                                
## d99                                                
## d100                                               
## d40_b                                              
## d50_b                                              
## d60_b                                              
## d70_b                                              
## d80_b                                              
## d90_b     0.96                                     
## hGA_b     0.82  0.74                               
## hGA_b_fs  0.83  0.75  0.99                         
## hGA_b_m   0.78  0.72  0.92     0.91                
## d90_b_m   0.92  0.97  0.66     0.67    0.72        
## 
## Correlation matrix for sumPaths2 :
##           d50  d60  d70  d80  d90  d95  d98  d99 d100 d40_b d50_b d60_b d70_b
## d50                                                                          
## d60      0.98                                                                
## d70      0.93 0.97                                                           
## d80      0.85 0.91 0.97                                                      
## d90      0.71 0.77 0.86 0.94                                                 
## d95      0.56 0.62 0.71 0.82 0.95                                            
## d98      0.46 0.51 0.60 0.72 0.88 0.98                                       
## d99      0.42 0.47 0.55 0.67 0.84 0.95 0.99                                  
## d100     0.42 0.46 0.55 0.66 0.84 0.95 0.99 1.00                             
## d40_b    0.68 0.65 0.58 0.50 0.39 0.30 0.25 0.22 0.21                        
## d50_b    0.82 0.84 0.80 0.72 0.58 0.44 0.36 0.32 0.31  0.87                  
## d60_b    0.83 0.87 0.87 0.80 0.66 0.51 0.42 0.36 0.36  0.76  0.96            
## d70_b    0.79 0.85 0.90 0.87 0.76 0.61 0.51 0.45 0.45  0.69  0.91  0.97      
## d80_b    0.76 0.83 0.90 0.91 0.84 0.71 0.62 0.56 0.56  0.64  0.85  0.93  0.98
## d90_b    0.69 0.75 0.84 0.90 0.92 0.85 0.78 0.73 0.72  0.53  0.73  0.80  0.88
## hGA_b    0.83 0.86 0.85 0.77 0.62 0.47 0.37 0.32 0.31  0.80  0.98  0.99  0.95
## hGA_b_fs 0.83 0.86 0.85 0.77 0.63 0.48 0.39 0.33 0.33  0.79  0.97  0.99  0.95
## hGA_b_m  0.93 0.95 0.92 0.83 0.67 0.51 0.41 0.36 0.36  0.69  0.90  0.93  0.89
## d90_b_m  0.72 0.78 0.87 0.94 0.97 0.90 0.82 0.78 0.77  0.43  0.64  0.73  0.82
##          d80_b d90_b hGA_b hGA_b_fs hGA_b_m d90_b_m
## d50                                                
## d60                                                
## d70                                                
## d80                                                
## d90                                                
## d95                                                
## d98                                                
## d99                                                
## d100                                               
## d40_b                                              
## d50_b                                              
## d60_b                                              
## d70_b                                              
## d80_b                                              
## d90_b     0.94                                     
## hGA_b     0.89  0.76                               
## hGA_b_fs  0.89  0.76  1.00                         
## hGA_b_m   0.84  0.72  0.94     0.93                
## d90_b_m   0.89  0.97  0.68     0.69    0.73

Preparation of SCFA data by Andrew Oliver

path_plasma_input <- "/Users/chad.masarweh/Documents/FL100_SCFA_andrew/plasma_scfas.csv"
path_plasma_output <- "/Users/chad.masarweh/Documents/FL100_SCFA_andrew/plasma_scfas_processed.csv"
path_fecal_input <- "/Users/chad.masarweh/Documents/FL100_SCFA_andrew/fecal_scfa_fl100.csv"
path_new_but_isobut <- "/Users/chad.masarweh/Documents/FL100_SCFA_andrew/butyrate_isob_new_integration_12-06-22.csv"
path_fecal_output <- "/Users/chad.masarweh/Documents/FL100_SCFA_andrew/fecal_scfas_processed.csv"
path_fecal_vars <- "/Users/chad.masarweh/Documents/FL100_SCFA_andrew/FL100_stool_variables.txt"

`%!in%` <- Negate(`%in%`)

## read in PLASMA SCFA data
scfa_plasma <- readr::read_delim(path_plasma_input, delim = ",", col_types = "fdddf")

## any missing or NA in propionate or butyrate, make it 10
## this is because you supply 10 as the value that is left-censored in 
## censored models.
###CHAD SAYS: to deal with rank statistical tests, might want to collapse samples equal to 10 
scfa_plasma[c("p_butyric_acid", "p_propionic_acid")][is.na(scfa_plasma[c("p_butyric_acid", "p_propionic_acid")])] <- 10

## create a list of subjects whose plasma samples we have multiples of
scfa_duplicated <- scfa_plasma %>% dplyr::filter(., duplicates != "") %>% dplyr::pull(., subject_id) %>% droplevels()

## create a empty DF in which to place the average of duplicated samples
deduplicated <- data.frame(subject_id=character(), 
                           p_acetic_acid=numeric(), 
                           p_propionic_acid=numeric(),
                           p_butyric_acid=numeric())

## loop through duplicated samples
scfas <- c("p_acetic_acid", "p_propionic_acid", "p_butyric_acid")
for (subject in unique(scfa_duplicated)) {
  
  ## for each duplicated sample, pull it out and all the duplicated SCFA data
  scfa_duplicated_tmp <- scfa_plasma %>% dplyr::filter(., subject_id == subject) %>% 
    dplyr::select(., subject_id, p_acetic_acid, p_propionic_acid, p_butyric_acid)
  
  ## check and make sure you dont have a SCFA that is completely missing data
  ## you shouldnt with this data
  if (max((sum(is.na(scfa_duplicated_tmp$p_acetic_acid))), 
          (sum(is.na(scfa_duplicated_tmp$p_propionic_acid))), 
          (sum(is.na(scfa_duplicated_tmp$p_butyric_acid)))) > NROW(scfa_duplicated_tmp)) {
    stop("You have duplicated subject_id with completely missing SCFA data for at least one SCFA")
  }
  
  ## create a vector of the mean SCFA abundance of the values you have,
  ## ignoring any NAs
  missing_means <- colMeans(scfa_duplicated_tmp[2:4], na.rm = T)
  count = 1
  
  ## add this SCFA mean to the formerly empty, deduplicated DF
  deduplicated <- deduplicated %>% tibble::add_row(., subject_id=subject, 
                                                   p_acetic_acid=missing_means[1], 
                                                   p_propionic_acid=missing_means[2],
                                                   p_butyric_acid=missing_means[3])
}

## remove duplicated from raw data and add back in averaged values
scfa_plasma_dedup <- scfa_plasma %>% dplyr::select(., -duplicates) %>%
  dplyr::filter(., subject_id %!in% scfa_duplicated)
scfa_plasma_dedup <- rbind(scfa_plasma_dedup, deduplicated)

## convert ng/mL to nmole/ul because fecal units are nmole/mg
scfa_plasma_dedup$p_butyric_acid_nmol <- scfa_plasma_dedup$p_butyric_acid / (1000 * 88.11)
scfa_plasma_dedup$p_acetic_acid_nmol <- scfa_plasma_dedup$p_acetic_acid / (1000 * 60.052)
scfa_plasma_dedup$p_propionic_acid_nmol <- scfa_plasma_dedup$p_propionic_acid / (1000 * 74.08)

## total here
scfa_plasma_dedup$p_scfa_nmol_total <- scfa_plasma_dedup$p_butyric_acid_nmol + 
  scfa_plasma_dedup$p_acetic_acid_nmol + 
  scfa_plasma_dedup$p_propionic_acid_nmol

## create relative abundance values
scfa_plasma_dedup$p_butyric_acid_nmol_norm <- scfa_plasma_dedup$p_butyric_acid_nmol / scfa_plasma_dedup$p_scfa_nmol_total
scfa_plasma_dedup$p_acetic_acid_nmol_norm <- scfa_plasma_dedup$p_acetic_acid_nmol / scfa_plasma_dedup$p_scfa_nmol_total
scfa_plasma_dedup$p_propionic_acid_nmol_norm <- scfa_plasma_dedup$p_propionic_acid_nmol / scfa_plasma_dedup$p_scfa_nmol_total

## write to file
#readr::write_delim(path_plasma_output, delim = ",", x = scfa_plasma_dedup)

## READ IN FECAL SCFA ==========================================================
fecal_scfas <- readr::read_delim(path_fecal_input, delim = ",", col_types = "fdddd") %>% dplyr::select(., -butyrate)
new_fecal_butyrate <- readr::read_delim(path_new_but_isobut, delim = ",", col_types = "fdd")
fecal_scfas <- merge(new_fecal_butyrate, fecal_scfas, by = "subject_id")
fecal_scfas <- fecal_scfas %>% rename(., "butyrate" = "new_butyrate", "isobutyrate" = "new_isobutyrate")
fecal_vars <- read.delim(path_fecal_vars)

## get rid of fecal samples that are >24 hrs or after visit 1
fecal_vars <- fecal_vars %>%
  dplyr::filter(., diff_time_hrs < 24) %>%
  dplyr::filter(., AfterV2 == 0)

fecal_scfas <- fecal_scfas %>% dplyr::filter(., subject_id %in% fecal_vars$subject_id)

## take relative abundane of SCFA
fecal_scfas$acetate_norm <- fecal_scfas$acetate / fecal_scfas$total_scfa
fecal_scfas$butyrate_norm <- fecal_scfas$butyrate / fecal_scfas$total_scfa
fecal_scfas$propionate_norm <- fecal_scfas$propionate / fecal_scfas$total_scfa

## dist to norm (60:20:20)
fecal_scfas$acetate_norm_ratio_dist <- fecal_scfas$acetate_norm - 0.6
fecal_scfas$butyrate_norm_ratio_dist <- fecal_scfas$butyrate_norm - 0.2
fecal_scfas$propionate_norm_ratio_dist <- fecal_scfas$propionate_norm - 0.2

## get rid of isobutyrate - further evidence makes it seem like it is not isobutyrate
fecal_scfas <- fecal_scfas %>% dplyr::select(., -isobutyrate)

#readr::write_delim(path_fecal_output, delim = ",", x = fecal_scfas)

Filtering and editing Andrew’s SCFA tables

# filter scfa table, change subject_id data type from factor to character, and rename headers
f_scfas = fecal_scfas[,c(1:8)]
f_scfas$subject_id = as.character(f_scfas$subject_id)

colnames(f_scfas) = 
  c(
    "subject_id", 
    "f_butyrate_nm_abs", 
    "f_acetate_nm_abs", 
    "f_propionate_nm_abs", 
    "f_AcPrBu_tot_nm_abs", 
    "f_acetate_nm_rel", 
    "f_butyrate_nm_rel", 
    "f_propionate_nm_rel"
    )


p_scfa_dedup = scfa_plasma_dedup
p_scfa_dedup$subject_id = as.character(p_scfa_dedup$subject_id)

colnames(p_scfa_dedup) = 
  c(
    "subject_id", 
    "p_acetic_mg_abs", 
    "p_propionic_mg_abs", 
    "p_butyric_mg_abs", 
    "p_butyric_nm_abs", 
    "p_acetic_nm_abs", 
    "p_propionic_nm_abs", 
    "p_AcPrBu_tot_nm_abs", 
    "p_butyric_nm_rel", 
    "p_acetic_nm_rel", 
    "p_propionic_nm_rel"
    )


class(p_scfa_dedup)
## [1] "tbl_df"     "tbl"        "data.frame"
class(f_scfas)
## [1] "data.frame"

Join the pathways and genes RPKG lists, respectively, with the butyrate concentration data

Use inner_join() because I only want subjects that have pathway RPKG and butyrate measurements, because not all subjects were metagenome’d and GC/MS’d

path_and_conc <- list()

for (element_name in names(pathways_rpkg)) {
  
  # Inner join with `f_scfas` and store the result with "f_" prefix
  path_and_conc[[paste0("f_", element_name)]] <- 
    inner_join(f_scfas, pathways_rpkg[[element_name]], by = "subject_id")
  
  # Inner join with `p_scfa_dedup` and store the result with "p_" prefix
  path_and_conc[[paste0("p_", element_name)]] <- 
    inner_join(p_scfa_dedup, pathways_rpkg[[element_name]], by = "subject_id")
}


genes_and_conc <- list()

for (element_name in names(genes_rpkg)) {
  
  # Inner join with `f_scfas` and store the result with "f_" prefix
  genes_and_conc[[paste0("f_", element_name)]] <- 
    inner_join(f_scfas, genes_rpkg[[element_name]], by = "subject_id")
  
  # Inner join with `p_scfa_dedup` and store the result with "p_" prefix
  genes_and_conc[[paste0("p_", element_name)]] <- 
    inner_join(p_scfa_dedup, genes_rpkg[[element_name]], by = "subject_id")
}

# Check the names of the new list
names(path_and_conc)
##  [1] "f_d50"      "p_d50"      "f_d60"      "p_d60"      "f_d70"     
##  [6] "p_d70"      "f_d80"      "p_d80"      "f_d90"      "p_d90"     
## [11] "f_d95"      "p_d95"      "f_d98"      "p_d98"      "f_d99"     
## [16] "p_d99"      "f_d100"     "p_d100"     "f_d40_b"    "p_d40_b"   
## [21] "f_d50_b"    "p_d50_b"    "f_d60_b"    "p_d60_b"    "f_d70_b"   
## [26] "p_d70_b"    "f_d80_b"    "p_d80_b"    "f_d90_b"    "p_d90_b"   
## [31] "f_hGA_b"    "p_hGA_b"    "f_hGA_b_fs" "p_hGA_b_fs" "f_hGA_b_m" 
## [36] "p_hGA_b_m"  "f_d90_b_m"  "p_d90_b_m"
head(path_and_conc[["f_d90"]])
##   subject_id f_butyrate_nm_abs f_acetate_nm_abs f_propionate_nm_abs
## 1       5001          9.206765         32.61356            8.346758
## 2       5002          8.357445         36.04017            5.513996
## 3       5004          2.099615         18.27598            3.031083
## 4       5006         13.425268         27.53877            6.360774
## 5       5007         10.858761         33.65036           14.974260
## 6       5009          8.147446         23.73812            7.771299
##   f_AcPrBu_tot_nm_abs f_acetate_nm_rel f_butyrate_nm_rel f_propionate_nm_rel
## 1            51.31167        0.6355974        0.17942829           0.1626678
## 2            51.14643        0.7046468        0.16340231           0.1078080
## 3            24.69678        0.7400148        0.08501571           0.1227319
## 4            49.95069        0.5513191        0.26877044           0.1273411
## 5            60.91302        0.5524330        0.17826666           0.2458302
## 6            40.46712        0.5866027        0.20133497           0.1920398
##     Acetyl       Glut       Lys       GABA sumPaths1 sumPaths2
## 1 4.367817 0.21934149 0.4296898 0.09447196  9.282638  6.818066
## 2 4.746446 0.16089307 0.3225241 0.16553773  9.415580  6.920423
## 3 4.117462 0.16650045 0.7835252 0.06022555  8.745365  6.516442
## 4 4.706142 0.25245229 0.2708652 0.07475753  9.206336  6.749326
## 5 4.293260 0.09571083 0.1179430 0.11734490  7.949828  5.867915
## 6 5.362863 0.11827640 0.2626814 0.13179127 10.717290  7.859475
names(genes_and_conc)
##  [1] "f_d50"      "p_d50"      "f_d60"      "p_d60"      "f_d70"     
##  [6] "p_d70"      "f_d80"      "p_d80"      "f_d90"      "p_d90"     
## [11] "f_d95"      "p_d95"      "f_d98"      "p_d98"      "f_d99"     
## [16] "p_d99"      "f_d100"     "p_d100"     "f_d40_b"    "p_d40_b"   
## [21] "f_d50_b"    "p_d50_b"    "f_d60_b"    "p_d60_b"    "f_d70_b"   
## [26] "p_d70_b"    "f_d80_b"    "p_d80_b"    "f_d90_b"    "p_d90_b"   
## [31] "f_hGA_b"    "p_hGA_b"    "f_hGA_b_fs" "p_hGA_b_fs" "f_hGA_b_m" 
## [36] "p_hGA_b_m"  "f_d90_b_m"  "p_d90_b_m"
head(genes_and_conc[["f_d90"]])
##   subject_id f_butyrate_nm_abs f_acetate_nm_abs f_propionate_nm_abs
## 1       5001          9.206765         32.61356            8.346758
## 2       5002          8.357445         36.04017            5.513996
## 3       5004          2.099615         18.27598            3.031083
## 4       5006         13.425268         27.53877            6.360774
## 5       5007         10.858761         33.65036           14.974260
## 6       5009          8.147446         23.73812            7.771299
##   f_AcPrBu_tot_nm_abs f_acetate_nm_rel f_butyrate_nm_rel f_propionate_nm_rel
## 1            51.31167        0.6355974        0.17942829           0.1626678
## 2            51.14643        0.7046468        0.16340231           0.1078080
## 3            24.69678        0.7400148        0.08501571           0.1227319
## 4            49.95069        0.5513191        0.26877044           0.1273411
## 5            60.91302        0.5524330        0.17826666           0.2458302
## 6            40.46712        0.5866027        0.20133497           0.1920398
##          ghbt       abfD       abfH        atoA        atoD      bcd      bhbd
## 1 0.013048140 0.05294342 0.02848040 0.042409661 0.052217530 1.706747 1.0813943
## 2 0.026707722 0.08495421 0.05387579 0.017774653 0.007491734 1.525022 1.1538065
## 3 0.007632446 0.03087848 0.02171463 0.054961693 0.047943151 1.388729 0.9437683
## 4 0.011751993 0.04464178 0.01836376 0.031878515 0.009629033 1.445109 1.1623520
## 5 0.021223488 0.04580750 0.05031392 0.002622225 0.000000000 1.243656 0.9936508
## 6 0.028181110 0.05097028 0.05263988 0.017189151 0.012525461 1.983863 1.3058586
##          buk       but       cro      etfA     etfB       gcdA       gcdB
## 1 0.02885555 1.0471298 1.0416672 1.1962368 1.268334 0.03539708 0.07273579
## 2 0.13674784 0.9702957 1.0786134 1.1356834 1.359474 0.03103638 0.04561364
## 3 0.16717118 0.8160721 0.9696918 1.1038401 1.125083 0.02678225 0.08530622
## 4 0.11322172 0.9443462 1.1172738 1.1666690 1.290341 0.04275899 0.09574755
## 5 0.09114074 0.9866933 1.0374143 0.9905148 1.091399 0.01632885 0.06746636
## 6 0.05114812 1.1996755 1.3664544 1.4135627 1.444252 0.02244025 0.04915359
##         gctA       gctB    hgCoAdA    hgCoAdB    hgCoAdC        kal       kamA
## 1 0.03033256 0.04760611 0.02819649 0.04265696 0.03515230 0.05967364 0.04275616
## 2 0.02668798 0.03873658 0.01096059 0.02967339 0.02379814 0.06486229 0.04007810
## 3 0.02562936 0.02780451 0.02333581 0.03046370 0.03248483 0.14141767 0.08633717
## 4 0.02913900 0.05033138 0.04249942 0.04685082 0.04087267 0.02902896 0.03719454
## 5 0.01721481 0.01490428 0.01196008 0.01808713 0.01721568 0.02432835 0.01290056
## 6 0.01784329 0.02184772 0.01361461 0.02167574 0.02085479 0.03724778 0.03763728
##         kamD       kamE        kce        kdd        ptb      thl
## 1 0.05010581 0.07584070 0.04813727 0.05854901 0.03527771 1.133492
## 2 0.04326683 0.04664447 0.05339148 0.04901454 0.14536178 1.261621
## 3 0.12261413 0.11817212 0.10364774 0.10843153 0.16066009 1.060098
## 4 0.04216306 0.03903660 0.03394606 0.04798838 0.10918579 1.259763
## 5 0.01347783 0.01189427 0.01920936 0.03351037 0.14829565 1.036066
## 6 0.03014895 0.04659812 0.04192864 0.03940606 0.08009900 1.359627
nrow(path_and_conc[["f_d90"]]) 
## [1] 283
nrow(genes_and_conc[["f_d90"]])
## [1] 283

Scatter plot of butyrate pathway RPKG vs fecal butyrate concentration

f_names <- grep("^f_", names(path_and_conc), value = TRUE)

legend_order <- c(
  # "f_d100",
  "f_d99", 
  # "f_d98",
  # "f_d95",
  #"f_d90", 
  # "f_d80",
  # "f_d70",
  # "f_d60",
  "f_d50", 
  "f_d90_b", 
  # "f_d80_b",
  # "f_d70_b",
  # "f_d60_b",
  "f_d50_b", 
  #"f_d40_b", 
  # "f_d90_b_m",
  "f_hGA_b",
  "f_hGA_b_fs"
  #"f_hGA_b_m"
  )

custom_colors <- c(
  # "f_d100" = "darkblue",
  "f_d99" = "black",
  # "f_d98" = "purple4",
  # "f_d95" = "purple",
  #"f_d90" = "grey30",
  # "f_d80" = "black",
  # "f_d70" = "grey30",
  # "f_d60" = "grey60",
  "f_d50" = "cyan",
  "f_d90_b" = "purple",
  # "f_d80_b" = "blue",
  # "f_d70_b" = "purple4",
  # "f_d60_b" = "black",
  "f_d50_b" = "orange",
  #"f_d40_b" = "yellow",
  # "f_d90_b_m" = "green",
  "f_hGA_b" = "blue",
  "f_hGA_b_fs" = "red"
  #"f_hGA_b_m" = "cyan"
  )

# Define your variable lists
#pathway_graphs <- c("Acetyl", "Lys", "GABA", "Glut", "sumPaths1", "sumPaths2")
pathway_graphs <- c("Acetyl", "sumPaths1", "sumPaths2")
conc_graphs <- c("f_butyrate_nm_abs", "f_butyrate_nm_rel")

# Create a list to store the plots
plot_list <- list()

# Nested loops to iterate over combinations of pathway and concentration graphs
for (pathway_var in pathway_graphs) {
  for (conc_var in conc_graphs) {
    
    combined_data <- do.call(rbind, lapply(legend_order, function(merged_element) {
      data <- path_and_conc[[merged_element]]
      data %>%
        select(subject_id, all_of(c(pathway_var, conc_var))) %>% # Select the relevant columns
        mutate(Element = merged_element)                    # Add a column to identify the source element
    }))
    
    # Set factor levels for the Element column to control legend order
    combined_data$Element <- factor(combined_data$Element, levels = legend_order)
    
    # Create the plot title dynamically
    plot_title <- paste(conc_var, "vs", pathway_var)
    
    # Create the ggplot object
    p <- ggplot(combined_data, aes(x = !!sym(pathway_var), y = !!sym(conc_var), color = Element)) +
      geom_point(size = 0.8) +
      geom_smooth(method = "lm", se = TRUE, alpha = 0.20, linewidth = 1.0) +
      labs(x = "pathway", y = "nanomolarity", title = plot_title, color = "Workflow") +
      scale_color_manual(values = custom_colors) +
      theme_minimal() +
      theme(
        plot.title = element_text(hjust = 0.5),  # Center the plot title
      )
    
    # Store the plot in the list with a descriptive name
    plot_list[[paste(conc_var, pathway_var, sep = "_vs_")]] <- p
  }
}

# Print the plots
plot_list
## $f_butyrate_nm_abs_vs_Acetyl
## `geom_smooth()` using formula = 'y ~ x'

## 
## $f_butyrate_nm_rel_vs_Acetyl
## `geom_smooth()` using formula = 'y ~ x'

## 
## $f_butyrate_nm_abs_vs_sumPaths1
## `geom_smooth()` using formula = 'y ~ x'

## 
## $f_butyrate_nm_rel_vs_sumPaths1
## `geom_smooth()` using formula = 'y ~ x'

## 
## $f_butyrate_nm_abs_vs_sumPaths2
## `geom_smooth()` using formula = 'y ~ x'

## 
## $f_butyrate_nm_rel_vs_sumPaths2
## `geom_smooth()` using formula = 'y ~ x'

Scatter plots of butyrate pathway RPKG vs plasma butyrate concentration

p_names <- grep("^p_", names(path_and_conc), value = TRUE)

pathways <- colnames(pathways_rpkg[[1]])[colnames(pathways_rpkg[[1]]) != "subject_id"]

legend_order <- c(
  #"p_d100", 
  #"p_d99", 
  #"p_d98", 
  #"p_d95", 
  "p_d50", 
  #"p_d60", 
  #"p_d70", 
  #"p_d80", 
  "p_d90", 
  "p_d90_b", 
  #"p_d80_b", 
  #"p_d70_b", 
  #"p_d60_b", 
  "p_d50_b", 
  #"p_d40_b", 
  "p_d90_b_m", 
  "p_hGA_b", 
  "p_hGA_b_fs"
  #"p_hGA_b_m"
)

custom_colors <- 
  c(
    
    #"p_d100" = "black", 
    #"p_d99" = "grey30", 
    #"p_d98" = "grey60",
    #"p_d95" = "grey90", 
    "p_d50" = "grey", 
    #"p_d60" = "blue", 
    #"p_d70" = "blue", 
    #"p_d80" = "blue", 
    "p_d90" = "grey30", 
    "p_d90_b" = "black", 
    #"p_d80_b" = "grey30", 
    #"p_d70_b" = "grey60",
    #"p_d60_b" = "grey90", 
    "p_d50_b" = "blue", 
    #"p_d40_b" = "orange", 
    "p_d90_b_m" = "red", 
    "p_hGA_b" = "green", 
    "p_hGA_b_fs" = "hotpink" 
    #"p_hGA_b_m" = "cyan"
    )

# Define your variable lists
pathway_graphs <- c("Acetyl", "sumPaths1", "sumPaths2")
conc_graphs <- c("p_butyric_nm_abs", "p_butyric_nm_rel")

# Create a list to store the plots
plot_list <- list()

# Nested loops to iterate over combinations of pathway and concentration graphs
for (pathway_var in pathway_graphs) {
  for (conc_var in conc_graphs) {
    
    combined_data <- do.call(rbind, lapply(p_names, function(merged_element) {
      data <- path_and_conc[[merged_element]]
      data %>%
        select(subject_id, all_of(c(pathway_var, conc_var))) %>% # Select the relevant columns
        mutate(Element = merged_element)                    # Add a column to identify the source element
    }))
    
    # Set factor levels for the Element column to control legend order
    combined_data$Element <- factor(combined_data$Element, levels = legend_order)

    # Create the plot title dynamically
    plot_title <- paste(conc_var, "vs", pathway_var, "for All Elements with Trendlines")
    
    # Create the ggplot object
    p <- ggplot(combined_data, aes(x = !!sym(pathway_var), y = !!sym(conc_var), color = Element)) +
      geom_point(size = 0.8) +
      geom_smooth(method = "lm", se = TRUE, alpha = 0.20, linewidth = 1.0) +
      labs(x = "pathway", y = "nanomolarity", title = plot_title, color = "Workflow") +
      scale_color_manual(values = custom_colors) +
      theme_minimal() +
      theme(
        plot.title = element_text(hjust = 0.5),  # Center the plot title
      )
    
    # Store the plot in the list with a descriptive name
    plot_list[[paste(conc_var, pathway_var, sep = "_vs_")]] <- p
  }
}

# Print the plots
plot_list
## $p_butyric_nm_abs_vs_Acetyl
## `geom_smooth()` using formula = 'y ~ x'

## 
## $p_butyric_nm_rel_vs_Acetyl
## `geom_smooth()` using formula = 'y ~ x'

## 
## $p_butyric_nm_abs_vs_sumPaths1
## `geom_smooth()` using formula = 'y ~ x'

## 
## $p_butyric_nm_rel_vs_sumPaths1
## `geom_smooth()` using formula = 'y ~ x'

## 
## $p_butyric_nm_abs_vs_sumPaths2
## `geom_smooth()` using formula = 'y ~ x'

## 
## $p_butyric_nm_rel_vs_sumPaths2
## `geom_smooth()` using formula = 'y ~ x'


Correlating butyrate pathway RPKG vs fecal butyrate concentration

f_names <- grep("^f_", names(path_and_conc), value = TRUE)
# Define your variable lists
pathway_graphs <- c("Acetyl", "Lys", "GABA", "Glut", "sumPaths1", "sumPaths2")
conc_graphs <- c("f_butyrate_nm_abs", "f_butyrate_nm_rel")

# Create a data frame to store the correlation results
correlation_results <- data.frame(
  pathway_var = character(),
  conc_var = character(),
  element = character(),
  spearman_rho = numeric(),
  p_value = numeric(),
  stringsAsFactors = FALSE
)

# Nested loops to iterate over combinations of pathway and concentration graphs
for (pathway_var in pathway_graphs) {
  for (conc_var in conc_graphs) {
    
    # Create a combined data frame for each combination
    combined_data <- do.call(rbind, lapply(f_names, function(merged_element) {
      data <- path_and_conc[[merged_element]]
      data %>%
        select(subject_id, !!sym(pathway_var), !!sym(conc_var)) %>% # Select relevant columns using dplyr's non-standard evaluation
        mutate(Element = merged_element)                    # Add a column to identify the source element
    }))
    
    # Calculate Spearman correlation for each element and add to results
    for (element in unique(combined_data$Element)) {
      element_data <- combined_data %>% filter(Element == element)
      
      # Perform Spearman correlation test
      correlation_test <- cor.test(
        element_data[[pathway_var]],
        element_data[[conc_var]],
        method = "spearman",
        exact = FALSE,
        use = "complete.obs"
      )
      
      # Store the results in the data frame
      correlation_results <- rbind(
        correlation_results,
        data.frame(
          pathway_var = pathway_var,
          conc_var = conc_var,
          element = element,
          spearman_rho = correlation_test$estimate,
          p_value = correlation_test$p.value,
          stringsAsFactors = FALSE
        )
      )
      
      rownames(correlation_results) <- NULL
    }
  }
}
correlation_results %>%
  filter(p_value < 0.05) %>%
  mutate(
    spearman_rho = round(spearman_rho, 3),
    p_value = round(p_value, 4)
  ) %>%
  arrange(desc(spearman_rho))
##     pathway_var          conc_var    element spearman_rho p_value
## 1        Acetyl f_butyrate_nm_rel      f_d95        0.307  0.0000
## 2     sumPaths1 f_butyrate_nm_rel      f_d95        0.300  0.0000
## 3        Acetyl f_butyrate_nm_rel      f_d98        0.298  0.0000
## 4        Acetyl f_butyrate_nm_rel      f_d90        0.297  0.0000
## 5     sumPaths1 f_butyrate_nm_rel      f_d98        0.297  0.0000
## 6        Acetyl f_butyrate_nm_rel      f_d99        0.288  0.0000
## 7        Acetyl f_butyrate_nm_rel     f_d100        0.288  0.0000
## 8     sumPaths1 f_butyrate_nm_rel      f_d99        0.288  0.0000
## 9     sumPaths1 f_butyrate_nm_rel     f_d100        0.288  0.0000
## 10    sumPaths1 f_butyrate_nm_rel      f_d90        0.286  0.0000
## 11    sumPaths2 f_butyrate_nm_rel      f_d95        0.277  0.0000
## 12    sumPaths2 f_butyrate_nm_rel      f_d98        0.270  0.0000
## 13       Acetyl f_butyrate_nm_rel      f_d80        0.266  0.0000
## 14       Acetyl f_butyrate_nm_rel  f_d90_b_m        0.263  0.0000
## 15    sumPaths2 f_butyrate_nm_rel      f_d90        0.262  0.0000
## 16    sumPaths2 f_butyrate_nm_rel      f_d99        0.259  0.0000
## 17       Acetyl f_butyrate_nm_rel    f_d90_b        0.258  0.0000
## 18    sumPaths2 f_butyrate_nm_rel     f_d100        0.258  0.0000
## 19    sumPaths1 f_butyrate_nm_rel  f_d90_b_m        0.254  0.0000
## 20    sumPaths1 f_butyrate_nm_abs      f_d95        0.249  0.0000
## 21       Acetyl f_butyrate_nm_abs      f_d95        0.248  0.0000
## 22       Acetyl f_butyrate_nm_rel    f_d80_b        0.245  0.0000
## 23    sumPaths1 f_butyrate_nm_rel    f_d90_b        0.245  0.0000
## 24    sumPaths1 f_butyrate_nm_abs      f_d98        0.244  0.0000
## 25    sumPaths2 f_butyrate_nm_rel  f_d90_b_m        0.239  0.0000
## 26       Acetyl f_butyrate_nm_rel      f_d70        0.237  0.0001
## 27    sumPaths1 f_butyrate_nm_abs      f_d99        0.237  0.0001
## 28    sumPaths1 f_butyrate_nm_abs     f_d100        0.237  0.0001
## 29       Acetyl f_butyrate_nm_abs      f_d98        0.234  0.0001
## 30       Acetyl f_butyrate_nm_abs      f_d90        0.230  0.0001
## 31    sumPaths2 f_butyrate_nm_abs      f_d95        0.229  0.0001
## 32    sumPaths2 f_butyrate_nm_rel    f_d90_b        0.229  0.0001
## 33       Acetyl f_butyrate_nm_abs     f_d100        0.223  0.0002
## 34    sumPaths1 f_butyrate_nm_rel      f_d80        0.223  0.0002
## 35    sumPaths2 f_butyrate_nm_abs      f_d98        0.223  0.0002
## 36       Acetyl f_butyrate_nm_abs      f_d99        0.222  0.0002
## 37       Acetyl f_butyrate_nm_rel    f_d70_b        0.215  0.0003
## 38    sumPaths1 f_butyrate_nm_abs      f_d90        0.214  0.0003
## 39    sumPaths2 f_butyrate_nm_abs      f_d99        0.212  0.0003
## 40    sumPaths2 f_butyrate_nm_abs     f_d100        0.211  0.0003
## 41       Acetyl f_butyrate_nm_rel      f_d60        0.209  0.0004
## 42    sumPaths1 f_butyrate_nm_rel    f_d80_b        0.198  0.0008
## 43       Acetyl f_butyrate_nm_abs    f_d90_b        0.197  0.0009
## 44    sumPaths2 f_butyrate_nm_rel      f_d80        0.193  0.0011
## 45       Acetyl f_butyrate_nm_abs  f_d90_b_m        0.192  0.0012
## 46       Acetyl f_butyrate_nm_rel      f_d50        0.190  0.0013
## 47       Acetyl f_butyrate_nm_rel  f_hGA_b_m        0.190  0.0013
## 48    sumPaths2 f_butyrate_nm_abs      f_d90        0.190  0.0013
## 49       Acetyl f_butyrate_nm_rel f_hGA_b_fs        0.188  0.0015
## 50       Acetyl f_butyrate_nm_abs      f_d80        0.187  0.0016
## 51       Acetyl f_butyrate_nm_abs    f_d80_b        0.181  0.0023
## 52    sumPaths1 f_butyrate_nm_rel      f_d70        0.180  0.0024
## 53    sumPaths1 f_butyrate_nm_abs    f_d90_b        0.178  0.0027
## 54       Acetyl f_butyrate_nm_rel    f_d60_b        0.175  0.0031
## 55    sumPaths1 f_butyrate_nm_abs  f_d90_b_m        0.175  0.0031
## 56       Acetyl f_butyrate_nm_rel    f_hGA_b        0.172  0.0038
## 57    sumPaths2 f_butyrate_nm_rel    f_d80_b        0.172  0.0037
## 58    sumPaths2 f_butyrate_nm_abs  f_d90_b_m        0.171  0.0039
## 59    sumPaths2 f_butyrate_nm_abs    f_d90_b        0.169  0.0043
## 60       Acetyl f_butyrate_nm_rel    f_d50_b        0.147  0.0134
## 61    sumPaths1 f_butyrate_nm_rel    f_d70_b        0.147  0.0134
## 62    sumPaths2 f_butyrate_nm_rel      f_d70        0.144  0.0155
## 63       Acetyl f_butyrate_nm_abs      f_d70        0.143  0.0157
## 64       Acetyl f_butyrate_nm_abs    f_d70_b        0.139  0.0195
## 65    sumPaths1 f_butyrate_nm_rel      f_d60        0.135  0.0228
## 66    sumPaths1 f_butyrate_nm_rel  f_hGA_b_m        0.128  0.0314
## 67    sumPaths1 f_butyrate_nm_abs      f_d80        0.125  0.0356
## 68    sumPaths2 f_butyrate_nm_rel    f_d70_b        0.123  0.0382
## 69    sumPaths1 f_butyrate_nm_abs    f_d80_b        0.119  0.0447
## 70         GABA f_butyrate_nm_rel    f_d60_b       -0.125  0.0362
## 71          Lys f_butyrate_nm_abs    f_d40_b       -0.129  0.0294
## 72         GABA f_butyrate_nm_abs      f_d90       -0.130  0.0284
## 73         GABA f_butyrate_nm_rel      f_d90       -0.131  0.0273
## 74         GABA f_butyrate_nm_abs    f_d50_b       -0.146  0.0137
## 75         GABA f_butyrate_nm_abs    f_hGA_b       -0.150  0.0118
## 76          Lys f_butyrate_nm_abs    f_d80_b       -0.155  0.0092
## 77          Lys f_butyrate_nm_rel    f_d40_b       -0.160  0.0069
## 78         GABA f_butyrate_nm_rel    f_hGA_b       -0.166  0.0051
## 79         GABA f_butyrate_nm_rel    f_d50_b       -0.168  0.0045
## 80         GABA f_butyrate_nm_abs  f_hGA_b_m       -0.169  0.0044
## 81         GABA f_butyrate_nm_abs    f_d70_b       -0.173  0.0035
## 82          Lys f_butyrate_nm_abs      f_d80       -0.177  0.0028
## 83         GABA f_butyrate_nm_abs f_hGA_b_fs       -0.178  0.0027
## 84         GABA f_butyrate_nm_rel f_hGA_b_fs       -0.178  0.0026
## 85         GABA f_butyrate_nm_rel  f_hGA_b_m       -0.179  0.0025
## 86          Lys f_butyrate_nm_rel    f_d80_b       -0.184  0.0019
## 87          Lys f_butyrate_nm_abs    f_d70_b       -0.185  0.0018
## 88         GABA f_butyrate_nm_rel    f_d70_b       -0.188  0.0015
## 89          Lys f_butyrate_nm_rel      f_d80       -0.206  0.0005
## 90          Lys f_butyrate_nm_abs    f_d60_b       -0.207  0.0004
## 91          Lys f_butyrate_nm_rel    f_d70_b       -0.212  0.0003
## 92         GABA f_butyrate_nm_abs      f_d80       -0.212  0.0003
## 93          Lys f_butyrate_nm_abs      f_d70       -0.215  0.0003
## 94         GABA f_butyrate_nm_abs      f_d70       -0.218  0.0002
## 95         GABA f_butyrate_nm_rel      f_d80       -0.221  0.0002
## 96          Lys f_butyrate_nm_abs    f_hGA_b       -0.226  0.0001
## 97          Lys f_butyrate_nm_abs f_hGA_b_fs       -0.227  0.0001
## 98          Lys f_butyrate_nm_rel    f_d60_b       -0.232  0.0001
## 99          Lys f_butyrate_nm_abs    f_d50_b       -0.233  0.0001
## 100        GABA f_butyrate_nm_abs      f_d60       -0.237  0.0001
## 101        GABA f_butyrate_nm_rel      f_d70       -0.237  0.0001
## 102         Lys f_butyrate_nm_rel      f_d70       -0.239  0.0000
## 103        GABA f_butyrate_nm_rel      f_d60       -0.240  0.0000
## 104         Lys f_butyrate_nm_abs  f_hGA_b_m       -0.248  0.0000
## 105        GABA f_butyrate_nm_abs      f_d50       -0.250  0.0000
## 106        GABA f_butyrate_nm_rel      f_d50       -0.250  0.0000
## 107         Lys f_butyrate_nm_rel f_hGA_b_fs       -0.251  0.0000
## 108         Lys f_butyrate_nm_rel    f_hGA_b       -0.253  0.0000
## 109         Lys f_butyrate_nm_abs      f_d60       -0.256  0.0000
## 110         Lys f_butyrate_nm_rel    f_d50_b       -0.262  0.0000
## 111         Lys f_butyrate_nm_rel  f_hGA_b_m       -0.267  0.0000
## 112         Lys f_butyrate_nm_abs      f_d50       -0.275  0.0000
## 113         Lys f_butyrate_nm_rel      f_d60       -0.286  0.0000
## 114         Lys f_butyrate_nm_rel      f_d50       -0.300  0.0000

Correlating butyrate pathway RPKG vs plasma butyrate concentration

## [1] pathway_var  conc_var     element      spearman_rho p_value     
## <0 rows> (or 0-length row.names)

Correlating butyrate pathway gene RPKG vs fecal butyrate concentration

f_names <- grep("^f_", names(path_and_conc), value = TRUE)
# Define your variable lists
pathway_graphs <- c(
           "abfH", # beginning of 4-aminobutyrate pathway
           "ghbt", 
           "abfD", 
           "kamA", # beginning of lysine pathway
           "kamD", 
           "kamE", 
           "kdd", 
           "kce", 
           "kal", 
           "atoA", 
           "atoD", 
           "gctA", # beginning of Glutarate pathway
           "gctB", 
           "hgCoAdA", 
           "hgCoAdB", 
           "hgCoAdC", 
           "gcdA", 
           "gcdB", ## note that this gene is not included in the pathway calculations
           "but", # beginning of acetyl-CoA pathway
           "buk", 
           "ptb", 
           "thl", 
           "bhbd", 
           "cro",
           "bcd", # shared genes
           "etfA", 
           "etfB"
           )
conc_graphs <- c("f_butyrate_nm_abs", "f_butyrate_nm_rel")

# Create a data frame to store the correlation results
correlation_results2 <- data.frame(
  pathway_var = character(),
  conc_var = character(),
  element = character(),
  spearman_rho = numeric(),
  p_value = numeric(),
  stringsAsFactors = FALSE
)

# Nested loops to iterate over combinations of pathway and concentration graphs
for (pathway_var in pathway_graphs) {
  for (conc_var in conc_graphs) {
    
    # Create a combined data frame for each combination
    combined_data <- do.call(rbind, lapply(f_names, function(merged_element) {
      data <- genes_and_conc[[merged_element]]
      data %>%
        select(subject_id, !!sym(pathway_var), !!sym(conc_var)) %>% # Select relevant columns using dplyr's non-standard evaluation
        mutate(Element = merged_element)                    # Add a column to identify the source element
    }))
    
    # Calculate Spearman correlation for each element and add to results
    for (element in unique(combined_data$Element)) {
      element_data <- combined_data %>% filter(Element == element)
      
      # Perform Spearman correlation test
      correlation_test <- cor.test(
        element_data[[pathway_var]],
        element_data[[conc_var]],
        method = "spearman",
        exact = FALSE,
        use = "complete.obs"
      )
      
      # Store the results in the data frame
      correlation_results2 <- rbind(
        correlation_results2,
        data.frame(
          pathway_var = pathway_var,
          conc_var = conc_var,
          element = element,
          spearman_rho = correlation_test$estimate,
          p_value = correlation_test$p.value,
          stringsAsFactors = FALSE
        )
      )
    }
  }
}
correlation_results2 %>%
  filter(p_value < 0.05) %>%
  mutate(
    spearman_rho = round(spearman_rho, 3),
    p_value = round(p_value, 4)
  ) %>%
  arrange(desc(spearman_rho))
##         pathway_var          conc_var    element spearman_rho p_value
## rho974         etfA f_butyrate_nm_rel      f_d95        0.356  0.0000
## rho975         etfA f_butyrate_nm_rel      f_d98        0.353  0.0000
## rho977         etfA f_butyrate_nm_rel     f_d100        0.352  0.0000
## rho976         etfA f_butyrate_nm_rel      f_d99        0.351  0.0000
## rho861         bhbd f_butyrate_nm_rel      f_d98        0.347  0.0000
## rho860         bhbd f_butyrate_nm_rel      f_d95        0.343  0.0000
## rho822          thl f_butyrate_nm_rel      f_d95        0.334  0.0000
## rho862         bhbd f_butyrate_nm_rel      f_d99        0.333  0.0000
## rho1014        etfB f_butyrate_nm_rel      f_d99        0.333  0.0000
## rho1015        etfB f_butyrate_nm_rel     f_d100        0.333  0.0000
## rho823          thl f_butyrate_nm_rel      f_d98        0.332  0.0000
## rho863         bhbd f_butyrate_nm_rel     f_d100        0.332  0.0000
## rho1013        etfB f_butyrate_nm_rel      f_d98        0.332  0.0000
## rho973         etfA f_butyrate_nm_rel      f_d90        0.331  0.0000
## rho859         bhbd f_butyrate_nm_rel      f_d90        0.330  0.0000
## rho707          but f_butyrate_nm_rel      f_d90        0.329  0.0000
## rho1012        etfB f_butyrate_nm_rel      f_d95        0.327  0.0000
## rho708          but f_butyrate_nm_rel      f_d95        0.325  0.0000
## rho825          thl f_butyrate_nm_rel     f_d100        0.325  0.0000
## rho824          thl f_butyrate_nm_rel      f_d99        0.324  0.0000
## rho1011        etfB f_butyrate_nm_rel      f_d90        0.321  0.0000
## rho709          but f_butyrate_nm_rel      f_d98        0.320  0.0000
## rho710          but f_butyrate_nm_rel      f_d99        0.315  0.0000
## rho711          but f_butyrate_nm_rel     f_d100        0.315  0.0000
## rho936          bcd f_butyrate_nm_rel      f_d95        0.310  0.0000
## rho938          bcd f_butyrate_nm_rel      f_d99        0.310  0.0000
## rho939          bcd f_butyrate_nm_rel     f_d100        0.310  0.0000
## rho937          bcd f_butyrate_nm_rel      f_d98        0.309  0.0000
## rho972         etfA f_butyrate_nm_rel      f_d80        0.308  0.0000
## rho858         bhbd f_butyrate_nm_rel      f_d80        0.306  0.0000
## rho706          but f_butyrate_nm_rel      f_d80        0.304  0.0000
## rho721          but f_butyrate_nm_rel  f_d90_b_m        0.302  0.0000
## rho821          thl f_butyrate_nm_rel      f_d90        0.300  0.0000
## rho717          but f_butyrate_nm_rel    f_d90_b        0.299  0.0000
## rho873         bhbd f_butyrate_nm_rel  f_d90_b_m        0.297  0.0000
## rho955         etfA f_butyrate_nm_abs      f_d95        0.295  0.0000
## rho869         bhbd f_butyrate_nm_rel    f_d90_b        0.293  0.0000
## rho935          bcd f_butyrate_nm_rel      f_d90        0.291  0.0000
## rho956         etfA f_butyrate_nm_abs      f_d98        0.291  0.0000
## rho842         bhbd f_butyrate_nm_abs      f_d98        0.289  0.0000
## rho898          cro f_butyrate_nm_rel      f_d95        0.289  0.0000
## rho868         bhbd f_butyrate_nm_rel    f_d80_b        0.288  0.0000
## rho957         etfA f_butyrate_nm_abs      f_d99        0.286  0.0000
## rho958         etfA f_butyrate_nm_abs     f_d100        0.286  0.0000
## rho803          thl f_butyrate_nm_abs      f_d95        0.285  0.0000
## rho841         bhbd f_butyrate_nm_abs      f_d95        0.284  0.0000
## rho1021        etfB f_butyrate_nm_rel    f_d90_b        0.284  0.0000
## rho897          cro f_butyrate_nm_rel      f_d90        0.283  0.0000
## rho857         bhbd f_butyrate_nm_rel      f_d70        0.280  0.0000
## rho843         bhbd f_butyrate_nm_abs      f_d99        0.279  0.0000
## rho820          thl f_butyrate_nm_rel      f_d80        0.278  0.0000
## rho844         bhbd f_butyrate_nm_abs     f_d100        0.278  0.0000
## rho899          cro f_butyrate_nm_rel      f_d98        0.278  0.0000
## rho995         etfB f_butyrate_nm_abs      f_d99        0.277  0.0000
## rho1025        etfB f_butyrate_nm_rel  f_d90_b_m        0.277  0.0000
## rho996         etfB f_butyrate_nm_abs     f_d100        0.276  0.0000
## rho804          thl f_butyrate_nm_abs      f_d98        0.275  0.0000
## rho716          but f_butyrate_nm_rel    f_d80_b        0.273  0.0000
## rho994         etfB f_butyrate_nm_abs      f_d98        0.271  0.0000
## rho993         etfB f_butyrate_nm_abs      f_d95        0.270  0.0000
## rho856         bhbd f_butyrate_nm_rel      f_d60        0.269  0.0000
## rho911          cro f_butyrate_nm_rel  f_d90_b_m        0.267  0.0000
## rho920          bcd f_butyrate_nm_abs     f_d100        0.267  0.0000
## rho840         bhbd f_butyrate_nm_abs      f_d90        0.266  0.0000
## rho918          bcd f_butyrate_nm_abs      f_d98        0.266  0.0000
## rho919          bcd f_butyrate_nm_abs      f_d99        0.266  0.0000
## rho705          but f_butyrate_nm_rel      f_d70        0.265  0.0000
## rho945          bcd f_butyrate_nm_rel    f_d90_b        0.265  0.0000
## rho983         etfA f_butyrate_nm_rel    f_d90_b        0.265  0.0000
## rho987         etfA f_butyrate_nm_rel  f_d90_b_m        0.265  0.0000
## rho949          bcd f_butyrate_nm_rel  f_d90_b_m        0.264  0.0000
## rho855         bhbd f_butyrate_nm_rel      f_d50        0.263  0.0000
## rho954         etfA f_butyrate_nm_abs      f_d90        0.263  0.0000
## rho819          thl f_butyrate_nm_rel      f_d70        0.262  0.0000
## rho907          cro f_butyrate_nm_rel    f_d90_b        0.262  0.0000
## rho1010        etfB f_butyrate_nm_rel      f_d80        0.262  0.0000
## rho805          thl f_butyrate_nm_abs      f_d99        0.261  0.0000
## rho806          thl f_butyrate_nm_abs     f_d100        0.261  0.0000
## rho688          but f_butyrate_nm_abs      f_d90        0.259  0.0000
## rho689          but f_butyrate_nm_abs      f_d95        0.259  0.0000
## rho867         bhbd f_butyrate_nm_rel    f_d70_b        0.258  0.0000
## rho992         etfB f_butyrate_nm_abs      f_d90        0.258  0.0000
## rho971         etfA f_butyrate_nm_rel      f_d70        0.256  0.0000
## rho835          thl f_butyrate_nm_rel  f_d90_b_m        0.255  0.0000
## rho900          cro f_butyrate_nm_rel      f_d99        0.254  0.0000
## rho690          but f_butyrate_nm_abs      f_d98        0.252  0.0000
## rho901          cro f_butyrate_nm_rel     f_d100        0.252  0.0000
## rho1020        etfB f_butyrate_nm_rel    f_d80_b        0.251  0.0000
## rho831          thl f_butyrate_nm_rel    f_d90_b        0.250  0.0000
## rho692          but f_butyrate_nm_abs     f_d100        0.247  0.0000
## rho917          bcd f_butyrate_nm_abs      f_d95        0.247  0.0000
## rho691          but f_butyrate_nm_abs      f_d99        0.246  0.0000
## rho834          thl f_butyrate_nm_rel  f_hGA_b_m        0.246  0.0000
## rho934          bcd f_butyrate_nm_rel      f_d80        0.246  0.0000
## rho896          cro f_butyrate_nm_rel      f_d80        0.245  0.0000
## rho850         bhbd f_butyrate_nm_abs    f_d90_b        0.243  0.0000
## rho872         bhbd f_butyrate_nm_rel  f_hGA_b_m        0.243  0.0000
## rho906          cro f_butyrate_nm_rel    f_d80_b        0.243  0.0000
## rho802          thl f_butyrate_nm_abs      f_d90        0.242  0.0000
## rho818          thl f_butyrate_nm_rel      f_d60        0.242  0.0000
## rho982         etfA f_butyrate_nm_rel    f_d80_b        0.242  0.0000
## rho829          thl f_butyrate_nm_rel    f_d70_b        0.240  0.0000
## rho830          thl f_butyrate_nm_rel    f_d80_b        0.239  0.0000
## rho854         bhbd f_butyrate_nm_abs  f_d90_b_m        0.239  0.0000
## rho833          thl f_butyrate_nm_rel f_hGA_b_fs        0.237  0.0001
## rho839         bhbd f_butyrate_nm_abs      f_d80        0.237  0.0001
## rho879          cro f_butyrate_nm_abs      f_d95        0.236  0.0001
## rho817          thl f_butyrate_nm_rel      f_d50        0.235  0.0001
## rho944          bcd f_butyrate_nm_rel    f_d80_b        0.235  0.0001
## rho970         etfA f_butyrate_nm_rel      f_d60        0.235  0.0001
## rho849         bhbd f_butyrate_nm_abs    f_d80_b        0.234  0.0001
## rho871         bhbd f_butyrate_nm_rel f_hGA_b_fs        0.231  0.0001
## rho969         etfA f_butyrate_nm_rel      f_d50        0.230  0.0001
## rho832          thl f_butyrate_nm_rel    f_hGA_b        0.227  0.0001
## rho866         bhbd f_butyrate_nm_rel    f_d60_b        0.227  0.0001
## rho704          but f_butyrate_nm_rel      f_d60        0.226  0.0001
## rho870         bhbd f_butyrate_nm_rel    f_hGA_b        0.226  0.0001
## rho895          cro f_butyrate_nm_rel      f_d70        0.226  0.0001
## rho1019        etfB f_butyrate_nm_rel    f_d70_b        0.226  0.0001
## rho880          cro f_butyrate_nm_abs      f_d98        0.225  0.0001
## rho953         etfA f_butyrate_nm_abs      f_d80        0.225  0.0001
## rho865         bhbd f_butyrate_nm_rel    f_d50_b        0.224  0.0001
## rho1018        etfB f_butyrate_nm_rel    f_d60_b        0.224  0.0001
## rho1009        etfB f_butyrate_nm_rel      f_d70        0.223  0.0002
## rho878          cro f_butyrate_nm_abs      f_d90        0.221  0.0002
## rho698          but f_butyrate_nm_abs    f_d90_b        0.220  0.0002
## rho828          thl f_butyrate_nm_rel    f_d60_b        0.220  0.0002
## rho702          but f_butyrate_nm_abs  f_d90_b_m        0.216  0.0003
## rho715          but f_butyrate_nm_rel    f_d70_b        0.216  0.0002
## rho703          but f_butyrate_nm_rel      f_d50        0.215  0.0003
## rho687          but f_butyrate_nm_abs      f_d80        0.213  0.0003
## rho864         bhbd f_butyrate_nm_rel    f_d40_b        0.212  0.0003
## rho905          cro f_butyrate_nm_rel    f_d70_b        0.211  0.0004
## rho979         etfA f_butyrate_nm_rel    f_d50_b        0.211  0.0003
## rho801          thl f_butyrate_nm_abs      f_d80        0.206  0.0005
## rho894          cro f_butyrate_nm_rel      f_d60        0.205  0.0005
## rho933          bcd f_butyrate_nm_rel      f_d70        0.205  0.0005
## rho881          cro f_butyrate_nm_abs      f_d99        0.204  0.0006
## rho827          thl f_butyrate_nm_rel    f_d50_b        0.203  0.0006
## rho882          cro f_butyrate_nm_abs     f_d100        0.202  0.0006
## rho893          cro f_butyrate_nm_rel      f_d50        0.201  0.0007
## rho910          cro f_butyrate_nm_rel  f_hGA_b_m        0.200  0.0007
## rho888          cro f_butyrate_nm_abs    f_d90_b        0.198  0.0008
## rho1002        etfB f_butyrate_nm_abs    f_d90_b        0.198  0.0008
## rho981         etfA f_butyrate_nm_rel    f_d70_b        0.196  0.0009
## rho812          thl f_butyrate_nm_abs    f_d90_b        0.195  0.0010
## rho816          thl f_butyrate_nm_abs  f_d90_b_m        0.195  0.0010
## rho892          cro f_butyrate_nm_abs  f_d90_b_m        0.195  0.0010
## rho848         bhbd f_butyrate_nm_abs    f_d70_b        0.194  0.0010
## rho904          cro f_butyrate_nm_rel    f_d60_b        0.194  0.0010
## rho916          bcd f_butyrate_nm_abs      f_d90        0.194  0.0011
## rho697          but f_butyrate_nm_abs    f_d80_b        0.193  0.0011
## rho838         bhbd f_butyrate_nm_abs      f_d70        0.193  0.0011
## rho1007        etfB f_butyrate_nm_rel      f_d50        0.192  0.0012
## rho719          but f_butyrate_nm_rel f_hGA_b_fs        0.190  0.0013
## rho712          but f_butyrate_nm_rel    f_d40_b        0.188  0.0015
## rho926          bcd f_butyrate_nm_abs    f_d90_b        0.185  0.0018
## rho964         etfA f_butyrate_nm_abs    f_d90_b        0.184  0.0018
## rho1008        etfB f_butyrate_nm_rel      f_d60        0.184  0.0019
## rho1006        etfB f_butyrate_nm_abs  f_d90_b_m        0.183  0.0020
## rho800          thl f_butyrate_nm_abs      f_d70        0.182  0.0021
## rho811          thl f_butyrate_nm_abs    f_d80_b        0.181  0.0023
## rho1017        etfB f_butyrate_nm_rel    f_d50_b        0.180  0.0023
## rho826          thl f_butyrate_nm_rel    f_d40_b        0.178  0.0026
## rho837         bhbd f_butyrate_nm_abs      f_d60        0.177  0.0029
## rho930          bcd f_butyrate_nm_abs  f_d90_b_m        0.177  0.0027
## rho714          but f_butyrate_nm_rel    f_d60_b        0.175  0.0031
## rho810          thl f_butyrate_nm_abs    f_d70_b        0.173  0.0035
## rho943          bcd f_butyrate_nm_rel    f_d70_b        0.172  0.0037
## rho887          cro f_butyrate_nm_abs    f_d80_b        0.171  0.0040
## rho908          cro f_butyrate_nm_rel    f_hGA_b        0.171  0.0039
## rho909          cro f_butyrate_nm_rel f_hGA_b_fs        0.171  0.0040
## rho1024        etfB f_butyrate_nm_rel  f_hGA_b_m        0.171  0.0040
## rho9           abfH f_butyrate_nm_abs    f_d40_b        0.170  0.0042
## rho903          cro f_butyrate_nm_rel    f_d50_b        0.170  0.0042
## rho713          but f_butyrate_nm_rel    f_d50_b        0.169  0.0043
## rho968         etfA f_butyrate_nm_abs  f_d90_b_m        0.169  0.0043
## rho980         etfA f_butyrate_nm_rel    f_d60_b        0.169  0.0044
## rho1001        etfB f_butyrate_nm_abs    f_d80_b        0.168  0.0045
## rho814          thl f_butyrate_nm_abs f_hGA_b_fs        0.167  0.0049
## rho815          thl f_butyrate_nm_abs  f_hGA_b_m        0.166  0.0051
## rho28          abfH f_butyrate_nm_rel    f_d40_b        0.165  0.0054
## rho948          bcd f_butyrate_nm_rel  f_hGA_b_m        0.164  0.0055
## rho991         etfB f_butyrate_nm_abs      f_d80        0.163  0.0059
## rho836         bhbd f_butyrate_nm_abs      f_d50        0.162  0.0062
## rho960         etfA f_butyrate_nm_abs    f_d50_b        0.162  0.0064
## rho946          bcd f_butyrate_nm_rel    f_hGA_b        0.161  0.0066
## rho963         etfA f_butyrate_nm_abs    f_d80_b        0.161  0.0067
## rho877          cro f_butyrate_nm_abs      f_d80        0.160  0.0071
## rho932          bcd f_butyrate_nm_rel      f_d60        0.160  0.0071
## rho999         etfB f_butyrate_nm_abs    f_d60_b        0.160  0.0070
## rho1023        etfB f_butyrate_nm_rel f_hGA_b_fs        0.160  0.0068
## rho720          but f_butyrate_nm_rel  f_hGA_b_m        0.159  0.0074
## rho1022        etfB f_butyrate_nm_rel    f_hGA_b        0.159  0.0074
## rho847         bhbd f_butyrate_nm_abs    f_d60_b        0.158  0.0077
## rho799          thl f_butyrate_nm_abs      f_d60        0.157  0.0082
## rho853         bhbd f_butyrate_nm_abs  f_hGA_b_m        0.157  0.0083
## rho852         bhbd f_butyrate_nm_abs f_hGA_b_fs        0.156  0.0087
## rho1016        etfB f_butyrate_nm_rel    f_d40_b        0.155  0.0089
## rho809          thl f_butyrate_nm_abs    f_d60_b        0.152  0.0105
## rho851         bhbd f_butyrate_nm_abs    f_hGA_b        0.152  0.0105
## rho947          bcd f_butyrate_nm_rel f_hGA_b_fs        0.152  0.0105
## rho952         etfA f_butyrate_nm_abs      f_d70        0.152  0.0104
## rho846         bhbd f_butyrate_nm_abs    f_d50_b        0.151  0.0110
## rho1000        etfB f_butyrate_nm_abs    f_d70_b        0.150  0.0115
## rho813          thl f_butyrate_nm_abs    f_hGA_b        0.149  0.0118
## rho986         etfA f_butyrate_nm_rel  f_hGA_b_m        0.149  0.0119
## rho985         etfA f_butyrate_nm_rel f_hGA_b_fs        0.148  0.0126
## rho931          bcd f_butyrate_nm_rel      f_d50        0.147  0.0131
## rho680         gcdB f_butyrate_nm_rel    f_hGA_b        0.146  0.0142
## rho682         gcdB f_butyrate_nm_rel  f_hGA_b_m        0.146  0.0140
## rho798          thl f_butyrate_nm_abs      f_d50        0.146  0.0140
## rho925          bcd f_butyrate_nm_abs    f_d80_b        0.146  0.0138
## rho686          but f_butyrate_nm_abs      f_d70        0.143  0.0160
## rho718          but f_butyrate_nm_rel    f_hGA_b        0.137  0.0210
## rho681         gcdB f_butyrate_nm_rel f_hGA_b_fs        0.136  0.0218
## rho662         gcdB f_butyrate_nm_abs f_hGA_b_fs        0.135  0.0232
## rho808          thl f_butyrate_nm_abs    f_d50_b        0.135  0.0235
## rho661         gcdB f_butyrate_nm_abs    f_hGA_b        0.134  0.0239
## rho845         bhbd f_butyrate_nm_abs    f_d40_b        0.134  0.0247
## rho886          cro f_butyrate_nm_abs    f_d70_b        0.132  0.0267
## rho902          cro f_butyrate_nm_rel    f_d40_b        0.132  0.0260
## rho942          bcd f_butyrate_nm_rel    f_d60_b        0.132  0.0266
## rho984         etfA f_butyrate_nm_rel    f_hGA_b        0.131  0.0272
## rho876          cro f_butyrate_nm_abs      f_d70        0.130  0.0284
## rho951         etfA f_butyrate_nm_abs      f_d60        0.130  0.0287
## rho915          bcd f_butyrate_nm_abs      f_d80        0.129  0.0302
## rho978         etfA f_butyrate_nm_rel    f_d40_b        0.125  0.0356
## rho675         gcdB f_butyrate_nm_rel    f_d50_b        0.124  0.0376
## rho656         gcdB f_butyrate_nm_abs    f_d50_b        0.121  0.0415
## rho950         etfA f_butyrate_nm_abs      f_d50        0.121  0.0418
## rho962         etfA f_butyrate_nm_abs    f_d70_b        0.121  0.0423
## rho657         gcdB f_butyrate_nm_abs    f_d60_b        0.119  0.0450
## rho663         gcdB f_butyrate_nm_abs  f_hGA_b_m        0.119  0.0449
## rho676         gcdB f_butyrate_nm_rel    f_d60_b        0.118  0.0477
## rho990         etfB f_butyrate_nm_abs      f_d70        0.117  0.0488
## rho2           abfH f_butyrate_nm_abs      f_d70       -0.118  0.0473
## rho53          ghbt f_butyrate_nm_abs    f_hGA_b       -0.118  0.0476
## rho419         gctA f_butyrate_nm_abs      f_d60       -0.119  0.0451
## rho418         gctA f_butyrate_nm_abs      f_d50       -0.121  0.0422
## rho533      hgCoAdB f_butyrate_nm_abs      f_d60       -0.121  0.0422
## rho570      hgCoAdC f_butyrate_nm_abs      f_d50       -0.122  0.0405
## rho732          buk f_butyrate_nm_abs    f_d50_b       -0.125  0.0356
## rho19          abfH f_butyrate_nm_rel      f_d50       -0.126  0.0343
## rho74          ghbt f_butyrate_nm_rel  f_hGA_b_m       -0.126  0.0345
## rho509      hgCoAdA f_butyrate_nm_abs    f_hGA_b       -0.128  0.0315
## rho751          buk f_butyrate_nm_rel    f_d50_b       -0.128  0.0312
## rho531      hgCoAdA f_butyrate_nm_rel  f_d90_b_m       -0.129  0.0304
## rho626         gcdA f_butyrate_nm_abs  f_d90_b_m       -0.129  0.0305
## rho20          abfH f_butyrate_nm_rel      f_d60       -0.130  0.0283
## rho55          ghbt f_butyrate_nm_abs  f_hGA_b_m       -0.130  0.0287
## rho510      hgCoAdA f_butyrate_nm_abs f_hGA_b_fs       -0.130  0.0283
## rho622         gcdA f_butyrate_nm_abs    f_d90_b       -0.130  0.0292
## rho507      hgCoAdA f_butyrate_nm_abs    f_d80_b       -0.131  0.0279
## rho511      hgCoAdA f_butyrate_nm_abs  f_hGA_b_m       -0.132  0.0264
## rho60          ghbt f_butyrate_nm_rel      f_d80       -0.133  0.0252
## rho506      hgCoAdA f_butyrate_nm_abs    f_d70_b       -0.133  0.0256
## rho742          buk f_butyrate_nm_rel      f_d60       -0.134  0.0245
## rho3           abfH f_butyrate_nm_abs      f_d80       -0.135  0.0232
## rho89          abfD f_butyrate_nm_abs    f_d80_b       -0.136  0.0225
## rho308          kal f_butyrate_nm_abs      f_d90       -0.136  0.0218
## rho505      hgCoAdA f_butyrate_nm_abs    f_d60_b       -0.136  0.0223
## rho31          abfH f_butyrate_nm_rel    f_d70_b       -0.137  0.0208
## rho108         abfD f_butyrate_nm_rel    f_d80_b       -0.137  0.0209
## rho251          kdd f_butyrate_nm_rel      f_d90       -0.137  0.0215
## rho99          abfD f_butyrate_nm_rel      f_d90       -0.138  0.0201
## rho524      hgCoAdA f_butyrate_nm_rel    f_d60_b       -0.138  0.0199
## rho80          abfD f_butyrate_nm_abs      f_d90       -0.139  0.0190
## rho165         kamD f_butyrate_nm_abs    f_d80_b       -0.140  0.0184
## rho68          ghbt f_butyrate_nm_rel    f_d60_b       -0.142  0.0172
## rho73          ghbt f_butyrate_nm_rel f_hGA_b_fs       -0.143  0.0162
## rho526      hgCoAdA f_butyrate_nm_rel    f_d80_b       -0.143  0.0160
## rho529      hgCoAdA f_butyrate_nm_rel f_hGA_b_fs       -0.143  0.0160
## rho525      hgCoAdA f_butyrate_nm_rel    f_d70_b       -0.145  0.0149
## rho528      hgCoAdA f_butyrate_nm_rel    f_hGA_b       -0.145  0.0148
## rho48          ghbt f_butyrate_nm_abs    f_d50_b       -0.147  0.0134
## rho117         kamA f_butyrate_nm_abs      f_d80       -0.150  0.0116
## rho530      hgCoAdA f_butyrate_nm_rel  f_hGA_b_m       -0.150  0.0115
## rho289          kce f_butyrate_nm_rel      f_d90       -0.151  0.0112
## rho381         atoD f_butyrate_nm_abs      f_d60       -0.151  0.0111
## rho21          abfH f_butyrate_nm_rel      f_d70       -0.152  0.0104
## rho175         kamD f_butyrate_nm_rel      f_d90       -0.152  0.0106
## rho193         kamE f_butyrate_nm_abs      f_d80       -0.158  0.0078
## rho22          abfH f_butyrate_nm_rel      f_d80       -0.159  0.0076
## rho67          ghbt f_butyrate_nm_rel    f_d50_b       -0.160  0.0070
## rho203         kamE f_butyrate_nm_abs    f_d80_b       -0.160  0.0072
## rho91          abfD f_butyrate_nm_abs    f_hGA_b       -0.161  0.0067
## rho723          buk f_butyrate_nm_abs      f_d60       -0.161  0.0066
## rho741          buk f_butyrate_nm_rel      f_d50       -0.161  0.0065
## rho344         atoA f_butyrate_nm_abs      f_d70       -0.162  0.0063
## rho88          abfD f_butyrate_nm_abs    f_d70_b       -0.163  0.0058
## rho92          abfD f_butyrate_nm_abs f_hGA_b_fs       -0.163  0.0060
## rho184         kamD f_butyrate_nm_rel    f_d80_b       -0.163  0.0059
## rho551      hgCoAdB f_butyrate_nm_rel      f_d50       -0.163  0.0059
## rho87          abfD f_butyrate_nm_abs    f_d60_b       -0.164  0.0057
## rho333          kal f_butyrate_nm_rel    f_d50_b       -0.164  0.0057
## rho332          kal f_butyrate_nm_rel    f_d40_b       -0.165  0.0055
## rho86          abfD f_butyrate_nm_abs    f_d50_b       -0.167  0.0049
## rho106         abfD f_butyrate_nm_rel    f_d60_b       -0.168  0.0045
## rho85          abfD f_butyrate_nm_abs    f_d40_b       -0.170  0.0042
## rho327          kal f_butyrate_nm_rel      f_d90       -0.170  0.0041
## rho93          abfD f_butyrate_nm_abs  f_hGA_b_m       -0.171  0.0040
## rho107         abfD f_butyrate_nm_rel    f_d70_b       -0.172  0.0038
## rho561      hgCoAdB f_butyrate_nm_rel    f_d50_b       -0.172  0.0038
## rho769          ptb f_butyrate_nm_abs    f_d40_b       -0.173  0.0035
## rho110         abfD f_butyrate_nm_rel    f_hGA_b       -0.174  0.0034
## rho111         abfD f_butyrate_nm_rel f_hGA_b_fs       -0.174  0.0034
## rho105         abfD f_butyrate_nm_rel    f_d50_b       -0.175  0.0031
## rho400         atoD f_butyrate_nm_rel      f_d60       -0.176  0.0030
## rho788          ptb f_butyrate_nm_rel    f_d40_b       -0.176  0.0029
## rho54          ghbt f_butyrate_nm_abs f_hGA_b_fs       -0.177  0.0029
## rho542      hgCoAdB f_butyrate_nm_abs    f_d50_b       -0.177  0.0028
## rho104         abfD f_butyrate_nm_rel    f_d40_b       -0.178  0.0027
## rho112         abfD f_butyrate_nm_rel  f_hGA_b_m       -0.178  0.0027
## rho212         kamE f_butyrate_nm_rel      f_d80       -0.178  0.0026
## rho136         kamA f_butyrate_nm_rel      f_d80       -0.179  0.0025
## rho155         kamD f_butyrate_nm_abs      f_d80       -0.179  0.0026
## rho731          buk f_butyrate_nm_abs    f_d40_b       -0.179  0.0025
## rho222         kamE f_butyrate_nm_rel    f_d80_b       -0.181  0.0022
## rho339          kal f_butyrate_nm_rel f_hGA_b_fs       -0.181  0.0023
## rho532      hgCoAdB f_butyrate_nm_abs      f_d50       -0.181  0.0023
## rho363         atoA f_butyrate_nm_rel      f_d70       -0.182  0.0021
## rho750          buk f_butyrate_nm_rel    f_d40_b       -0.183  0.0020
## rho390         atoD f_butyrate_nm_abs    f_d50_b       -0.184  0.0019
## rho338          kal f_butyrate_nm_rel    f_hGA_b       -0.185  0.0017
## rho199         kamE f_butyrate_nm_abs    f_d40_b       -0.188  0.0015
## rho201         kamE f_butyrate_nm_abs    f_d60_b       -0.188  0.0015
## rho313          kal f_butyrate_nm_abs    f_d40_b       -0.188  0.0015
## rho314          kal f_butyrate_nm_abs    f_d50_b       -0.188  0.0015
## rho320          kal f_butyrate_nm_abs f_hGA_b_fs       -0.188  0.0015
## rho340          kal f_butyrate_nm_rel  f_hGA_b_m       -0.188  0.0015
## rho722          buk f_butyrate_nm_abs      f_d50       -0.188  0.0015
## rho200         kamE f_butyrate_nm_abs    f_d50_b       -0.189  0.0014
## rho202         kamE f_butyrate_nm_abs    f_d70_b       -0.189  0.0014
## rho205         kamE f_butyrate_nm_abs    f_hGA_b       -0.189  0.0014
## rho206         kamE f_butyrate_nm_abs f_hGA_b_fs       -0.189  0.0014
## rho129         kamA f_butyrate_nm_abs    f_hGA_b       -0.192  0.0012
## rho130         kamA f_butyrate_nm_abs f_hGA_b_fs       -0.192  0.0012
## rho319          kal f_butyrate_nm_abs    f_hGA_b       -0.193  0.0011
## rho192         kamE f_butyrate_nm_abs      f_d70       -0.195  0.0010
## rho321          kal f_butyrate_nm_abs  f_hGA_b_m       -0.195  0.0010
## rho395         atoD f_butyrate_nm_abs    f_hGA_b       -0.195  0.0010
## rho241          kdd f_butyrate_nm_abs    f_d80_b       -0.198  0.0008
## rho560      hgCoAdB f_butyrate_nm_rel    f_d40_b       -0.199  0.0007
## rho131         kamA f_butyrate_nm_abs  f_hGA_b_m       -0.200  0.0007
## rho190         kamE f_butyrate_nm_abs      f_d50       -0.200  0.0007
## rho191         kamE f_butyrate_nm_abs      f_d60       -0.200  0.0007
## rho396         atoD f_butyrate_nm_abs f_hGA_b_fs       -0.200  0.0007
## rho409         atoD f_butyrate_nm_rel    f_d50_b       -0.200  0.0007
## rho79          abfD f_butyrate_nm_abs      f_d80       -0.201  0.0007
## rho125         kamA f_butyrate_nm_abs    f_d60_b       -0.201  0.0007
## rho161         kamD f_butyrate_nm_abs    f_d40_b       -0.201  0.0007
## rho167         kamD f_butyrate_nm_abs    f_hGA_b       -0.201  0.0007
## rho116         kamA f_butyrate_nm_abs      f_d70       -0.202  0.0006
## rho124         kamA f_butyrate_nm_abs    f_d50_b       -0.202  0.0006
## rho126         kamA f_butyrate_nm_abs    f_d70_b       -0.202  0.0006
## rho162         kamD f_butyrate_nm_abs    f_d50_b       -0.202  0.0006
## rho207         kamE f_butyrate_nm_abs  f_hGA_b_m       -0.202  0.0006
## rho541      hgCoAdB f_butyrate_nm_abs    f_d40_b       -0.202  0.0006
## rho163         kamD f_butyrate_nm_abs    f_d60_b       -0.203  0.0006
## rho164         kamD f_butyrate_nm_abs    f_d70_b       -0.203  0.0006
## rho168         kamD f_butyrate_nm_abs f_hGA_b_fs       -0.203  0.0006
## rho154         kamD f_butyrate_nm_abs      f_d70       -0.204  0.0006
## rho244          kdd f_butyrate_nm_abs f_hGA_b_fs       -0.204  0.0006
## rho123         kamA f_butyrate_nm_abs    f_d40_b       -0.205  0.0005
## rho239          kdd f_butyrate_nm_abs    f_d60_b       -0.205  0.0005
## rho240          kdd f_butyrate_nm_abs    f_d70_b       -0.205  0.0005
## rho114         kamA f_butyrate_nm_abs      f_d50       -0.206  0.0005
## rho174         kamD f_butyrate_nm_rel      f_d80       -0.207  0.0005
## rho211         kamE f_butyrate_nm_rel      f_d70       -0.207  0.0004
## rho218         kamE f_butyrate_nm_rel    f_d40_b       -0.208  0.0004
## rho220         kamE f_butyrate_nm_rel    f_d60_b       -0.208  0.0004
## rho115         kamA f_butyrate_nm_abs      f_d60       -0.209  0.0004
## rho219         kamE f_butyrate_nm_rel    f_d50_b       -0.209  0.0004
## rho389         atoD f_butyrate_nm_abs    f_d40_b       -0.209  0.0004
## rho221         kamE f_butyrate_nm_rel    f_d70_b       -0.210  0.0004
## rho224         kamE f_butyrate_nm_rel    f_hGA_b       -0.210  0.0004
## rho225         kamE f_butyrate_nm_rel f_hGA_b_fs       -0.210  0.0004
## rho209         kamE f_butyrate_nm_rel      f_d50       -0.212  0.0003
## rho210         kamE f_butyrate_nm_rel      f_d60       -0.212  0.0003
## rho231          kdd f_butyrate_nm_abs      f_d80       -0.212  0.0003
## rho78          abfD f_butyrate_nm_abs      f_d70       -0.213  0.0003
## rho169         kamD f_butyrate_nm_abs  f_hGA_b_m       -0.213  0.0003
## rho187         kamD f_butyrate_nm_rel f_hGA_b_fs       -0.213  0.0003
## rho98          abfD f_butyrate_nm_rel      f_d80       -0.214  0.0003
## rho186         kamD f_butyrate_nm_rel    f_hGA_b       -0.214  0.0003
## rho243          kdd f_butyrate_nm_abs    f_hGA_b       -0.214  0.0003
## rho148         kamA f_butyrate_nm_rel    f_hGA_b       -0.215  0.0003
## rho153         kamD f_butyrate_nm_abs      f_d60       -0.215  0.0003
## rho180         kamD f_butyrate_nm_rel    f_d40_b       -0.215  0.0003
## rho307          kal f_butyrate_nm_abs      f_d80       -0.215  0.0003
## rho40          ghbt f_butyrate_nm_abs      f_d70       -0.216  0.0002
## rho149         kamA f_butyrate_nm_rel f_hGA_b_fs       -0.216  0.0003
## rho181         kamD f_butyrate_nm_rel    f_d50_b       -0.216  0.0002
## rho182         kamD f_butyrate_nm_rel    f_d60_b       -0.216  0.0002
## rho380         atoD f_butyrate_nm_abs      f_d50       -0.216  0.0003
## rho183         kamD f_butyrate_nm_rel    f_d70_b       -0.217  0.0002
## rho226         kamE f_butyrate_nm_rel  f_hGA_b_m       -0.217  0.0002
## rho279          kce f_butyrate_nm_abs    f_d80_b       -0.217  0.0002
## rho415         atoD f_butyrate_nm_rel f_hGA_b_fs       -0.217  0.0002
## rho336          kal f_butyrate_nm_rel    f_d80_b       -0.218  0.0002
## rho414         atoD f_butyrate_nm_rel    f_hGA_b       -0.218  0.0002
## rho150         kamA f_butyrate_nm_rel  f_hGA_b_m       -0.219  0.0002
## rho152         kamD f_butyrate_nm_abs      f_d50       -0.219  0.0002
## rho316          kal f_butyrate_nm_abs    f_d70_b       -0.219  0.0002
## rho335          kal f_butyrate_nm_rel    f_d70_b       -0.219  0.0002
## rho317          kal f_butyrate_nm_abs    f_d80_b       -0.220  0.0002
## rho77          abfD f_butyrate_nm_abs      f_d60       -0.221  0.0002
## rho353         atoA f_butyrate_nm_abs    f_d60_b       -0.221  0.0002
## rho358         atoA f_butyrate_nm_abs f_hGA_b_fs       -0.221  0.0002
## rho352         atoA f_butyrate_nm_abs    f_d50_b       -0.222  0.0002
## rho357         atoA f_butyrate_nm_abs    f_hGA_b       -0.222  0.0002
## rho47          ghbt f_butyrate_nm_abs    f_d40_b       -0.223  0.0002
## rho135         kamA f_butyrate_nm_rel      f_d70       -0.223  0.0002
## rho144         kamA f_butyrate_nm_rel    f_d60_b       -0.223  0.0002
## rho188         kamD f_butyrate_nm_rel  f_hGA_b_m       -0.223  0.0002
## rho275          kce f_butyrate_nm_abs    f_d40_b       -0.223  0.0002
## rho306          kal f_butyrate_nm_abs      f_d70       -0.223  0.0002
## rho579      hgCoAdC f_butyrate_nm_abs    f_d40_b       -0.223  0.0002
## rho315          kal f_butyrate_nm_abs    f_d60_b       -0.224  0.0001
## rho143         kamA f_butyrate_nm_rel    f_d50_b       -0.225  0.0001
## rho145         kamA f_butyrate_nm_rel    f_d70_b       -0.225  0.0001
## rho304          kal f_butyrate_nm_abs      f_d50       -0.226  0.0001
## rho59          ghbt f_butyrate_nm_rel      f_d70       -0.227  0.0001
## rho66          ghbt f_butyrate_nm_rel    f_d40_b       -0.227  0.0001
## rho334          kal f_butyrate_nm_rel    f_d60_b       -0.227  0.0001
## rho173         kamD f_butyrate_nm_rel      f_d70       -0.228  0.0001
## rho230          kdd f_butyrate_nm_abs      f_d70       -0.228  0.0001
## rho57          ghbt f_butyrate_nm_rel      f_d50       -0.229  0.0001
## rho133         kamA f_butyrate_nm_rel      f_d50       -0.229  0.0001
## rho278          kce f_butyrate_nm_abs    f_d70_b       -0.229  0.0001
## rho281          kce f_butyrate_nm_abs    f_hGA_b       -0.229  0.0001
## rho326          kal f_butyrate_nm_rel      f_d80       -0.229  0.0001
## rho351         atoA f_butyrate_nm_abs    f_d40_b       -0.229  0.0001
## rho397         atoD f_butyrate_nm_abs  f_hGA_b_m       -0.229  0.0001
## rho76          abfD f_butyrate_nm_abs      f_d50       -0.230  0.0001
## rho134         kamA f_butyrate_nm_rel      f_d60       -0.230  0.0001
## rho277          kce f_butyrate_nm_abs    f_d60_b       -0.230  0.0001
## rho598      hgCoAdC f_butyrate_nm_rel    f_d40_b       -0.230  0.0001
## rho97          abfD f_butyrate_nm_rel      f_d70       -0.231  0.0001
## rho276          kce f_butyrate_nm_abs    f_d50_b       -0.231  0.0001
## rho58          ghbt f_butyrate_nm_rel      f_d60       -0.232  0.0001
## rho282          kce f_butyrate_nm_abs f_hGA_b_fs       -0.232  0.0001
## rho238          kdd f_butyrate_nm_abs    f_d50_b       -0.233  0.0001
## rho376         atoA f_butyrate_nm_rel    f_hGA_b       -0.233  0.0001
## rho323          kal f_butyrate_nm_rel      f_d50       -0.234  0.0001
## rho377         atoA f_butyrate_nm_rel f_hGA_b_fs       -0.234  0.0001
## rho245          kdd f_butyrate_nm_abs  f_hGA_b_m       -0.235  0.0001
## rho372         atoA f_butyrate_nm_rel    f_d60_b       -0.235  0.0001
## rho399         atoD f_butyrate_nm_rel      f_d50       -0.235  0.0001
## rho416         atoD f_butyrate_nm_rel  f_hGA_b_m       -0.235  0.0001
## rho260          kdd f_butyrate_nm_rel    f_d80_b       -0.236  0.0001
## rho343         atoA f_butyrate_nm_abs      f_d60       -0.236  0.0001
## rho172         kamD f_butyrate_nm_rel      f_d60       -0.237  0.0001
## rho305          kal f_butyrate_nm_abs      f_d60       -0.237  0.0001
## rho325          kal f_butyrate_nm_rel      f_d70       -0.237  0.0001
## rho96          abfD f_butyrate_nm_rel      f_d60       -0.238  0.0001
## rho171         kamD f_butyrate_nm_rel      f_d50       -0.238  0.0001
## rho371         atoA f_butyrate_nm_rel    f_d50_b       -0.240  0.0000
## rho359         atoA f_butyrate_nm_abs  f_hGA_b_m       -0.241  0.0000
## rho228          kdd f_butyrate_nm_abs      f_d50       -0.243  0.0000
## rho324          kal f_butyrate_nm_rel      f_d60       -0.243  0.0000
## rho362         atoA f_butyrate_nm_rel      f_d60       -0.243  0.0000
## rho263          kdd f_butyrate_nm_rel f_hGA_b_fs       -0.245  0.0000
## rho258          kdd f_butyrate_nm_rel    f_d60_b       -0.246  0.0000
## rho259          kdd f_butyrate_nm_rel    f_d70_b       -0.246  0.0000
## rho408         atoD f_butyrate_nm_rel    f_d40_b       -0.246  0.0000
## rho95          abfD f_butyrate_nm_rel      f_d50       -0.247  0.0000
## rho378         atoA f_butyrate_nm_rel  f_hGA_b_m       -0.250  0.0000
## rho298          kce f_butyrate_nm_rel    f_d80_b       -0.252  0.0000
## rho370         atoA f_butyrate_nm_rel    f_d40_b       -0.252  0.0000
## rho250          kdd f_butyrate_nm_rel      f_d80       -0.253  0.0000
## rho38          ghbt f_butyrate_nm_abs      f_d50       -0.254  0.0000
## rho142         kamA f_butyrate_nm_rel    f_d40_b       -0.254  0.0000
## rho39          ghbt f_butyrate_nm_abs      f_d60       -0.257  0.0000
## rho342         atoA f_butyrate_nm_abs      f_d50       -0.259  0.0000
## rho361         atoA f_butyrate_nm_rel      f_d50       -0.259  0.0000
## rho294          kce f_butyrate_nm_rel    f_d40_b       -0.260  0.0000
## rho296          kce f_butyrate_nm_rel    f_d60_b       -0.263  0.0000
## rho297          kce f_butyrate_nm_rel    f_d70_b       -0.263  0.0000
## rho300          kce f_butyrate_nm_rel    f_hGA_b       -0.263  0.0000
## rho295          kce f_butyrate_nm_rel    f_d50_b       -0.264  0.0000
## rho249          kdd f_butyrate_nm_rel      f_d70       -0.266  0.0000
## rho269          kce f_butyrate_nm_abs      f_d80       -0.266  0.0000
## rho283          kce f_butyrate_nm_abs  f_hGA_b_m       -0.266  0.0000
## rho247          kdd f_butyrate_nm_rel      f_d50       -0.268  0.0000
## rho262          kdd f_butyrate_nm_rel    f_hGA_b       -0.268  0.0000
## rho301          kce f_butyrate_nm_rel f_hGA_b_fs       -0.269  0.0000
## rho229          kdd f_butyrate_nm_abs      f_d60       -0.280  0.0000
## rho264          kdd f_butyrate_nm_rel  f_hGA_b_m       -0.285  0.0000
## rho257          kdd f_butyrate_nm_rel    f_d50_b       -0.286  0.0000
## rho268          kce f_butyrate_nm_abs      f_d70       -0.289  0.0000
## rho302          kce f_butyrate_nm_rel  f_hGA_b_m       -0.289  0.0000
## rho288          kce f_butyrate_nm_rel      f_d80       -0.293  0.0000
## rho266          kce f_butyrate_nm_abs      f_d50       -0.295  0.0000
## rho267          kce f_butyrate_nm_abs      f_d60       -0.295  0.0000
## rho285          kce f_butyrate_nm_rel      f_d50       -0.318  0.0000
## rho287          kce f_butyrate_nm_rel      f_d70       -0.318  0.0000
## rho286          kce f_butyrate_nm_rel      f_d60       -0.322  0.0000
## rho248          kdd f_butyrate_nm_rel      f_d60       -0.331  0.0000

Correlating butyrate pathway gene RPKG vs plasma butyrate concentration

##        pathway_var         conc_var    element spearman_rho p_value
## rho298         kce p_butyric_nm_rel    p_d80_b        0.131  0.0294
## rho123        kamA p_butyric_nm_abs    p_d40_b        0.127  0.0339
## rho239         kdd p_butyric_nm_abs    p_d60_b        0.125  0.0366
## rho240         kdd p_butyric_nm_abs    p_d70_b        0.123  0.0398
## rho221        kamE p_butyric_nm_rel    p_d70_b        0.121  0.0431
## rho241         kdd p_butyric_nm_abs    p_d80_b        0.121  0.0438
## rho244         kdd p_butyric_nm_abs p_hGA_b_fs        0.121  0.0442
## rho219        kamE p_butyric_nm_rel    p_d50_b        0.120  0.0455
## rho220        kamE p_butyric_nm_rel    p_d60_b        0.120  0.0451
## rho722         buk p_butyric_nm_abs      p_d50        0.120  0.0458
## rho732         buk p_butyric_nm_abs    p_d50_b        0.120  0.0461
## rho218        kamE p_butyric_nm_rel    p_d40_b        0.119  0.0484
## rho224        kamE p_butyric_nm_rel    p_hGA_b        0.119  0.0478
## rho225        kamE p_butyric_nm_rel p_hGA_b_fs        0.119  0.0478
## rho243         kdd p_butyric_nm_abs    p_hGA_b        0.118  0.0496